以系统帐户运行 Invoke-WebRequest

问题描述 投票:0回答:4

我想在计划任务中将 Invoke-WebRequest 作为系统运行。

cmdlet 失败并出现以下错误:

Invoke-WebRequest : 无法解析响应内容,因为 Internet Explorer 引擎不可用,或 Internet Explorer 的 首次启动配置不完整。指定 使用 BasicParsing 参数并重试。

我不想使用 UseBasicParsing,因为我需要响应中的 ParsedHtml 对象。我怎样才能使这项工作?

powershell
4个回答
2
投票

我想除了使用

-UseBasicParsing
之外没有其他解决方法 - 您可以使用
.RawContent
属性访问 HTML。

作为替代方案,创建一个服务用户,登录一次并配置 IE,然后使用该用户执行您的计划任务。


1
投票

我知道这是一个老问题,但它在谷歌结果中排在首位,所以我认为这对其他人回答这个问题会有帮助。 我们解决此问题的方法是使用 psexec 运行 iexplore.exe 并单击 IE 首次运行对话框。

./psexec.exe -sid "$Env:ProgramFiles\Internet Explorer\iexplore.exe"

现在您可以从作为本地系统帐户运行的计划任务中使用 Invoke-WebRequest。


1
投票

问题是浏览器正在等待人来运行初始配置向导。您可以运行以下 Powershell 以添加注册表项以禁止等待该向导运行。

Set-ItemProperty -Path "HKLM:\Software\Microsoft\Internet Explorer\Main" -Name "DisableFirstRunCustomize" -Value 1

Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Internet Explorer\Main" -Name "DisableFirstRunCustomize" -Value 1

参考: https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/microsoft-windows-ie-internetexplorer-disablefirstrunwizard


0
投票

不确定为什么你会运行任何连接到 Internet 的系统作为系统。你真的应该作为一个较低特权的帐户运行。也就是说,MrRat 的解决方案是在服务帐户上下文中运行脚本时的简单解决方案。在开发时,PoweShell 脚本作为没有特殊本地权限的开发人员交互工作良好,但在作为 gMSA 运行时失败。撕破异常,我发现了这个:

System.NotSupportedException: 
Data: System.Collections.ListDictionaryInternal Source: Microsoft.PowerShell.Commands.Utility   
StackTrace: at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.VerifyInternetExplorerAvailable(Boolean checkComObject)
   at Microsoft.PowerShell.Commands.InvokeWebRequestCommand.ProcessResponse(WebResponse response)
   at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()

正是

VerifyInternetExplorerAvailable(Boolean checkComObject)
这篇文章最终让我来到这里寻找解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.