Powershell invoke-webrequest不起作用

Sha*_* L. 4 windows powershell server prtg

我有一个Powershell脚本,应该Invoke-WebRequest对一个网站运行。我想将此脚本与PRTG Network Monitor一起使用,以确保Web服务器正常启动并运行。

当前,该脚本可以在我的本地计算机上运行,​​也可以在探测服务器上使用我的域凭据运行。但是,当使用PRTG使用的本地管理员凭据登录时,它不会运行。

我把它缩小到一行

Invoke-WebRequest $uri -Method POST -Body $body -TimeoutSec 10
Run Code Online (Sandbox Code Playgroud)

看来,无论出于何种原因,在使用此帐户Invoke-WebRequest时均无法使用。运行该行时,它不会产生任何东西,没有错误,警告或输出。这两个$uri$body变量已被定义为好。

即使我使用本地admin PRTG帐户登录了探针服务器并以其他用户身份(使用我自己的凭据)运行Powershell,它仍然无法产生任何结果。

为什么本地管理员帐户无法运行Invoke-WebRequest?这是在带有PSVersion 4.0的Windows Server 2012R2上发生的。

Tes*_*ler 7

[将我的评论变成答案]

在Windows PowerShell中,Invoke-WebRequest除非另有说明,否则使用Internet Explorer引擎解析网站。IE有很多限制-来自其受信任的站点/安全区域的安全模型,IE增强安全性,由组策略覆盖的限制,也许还有更多限制,并且您似乎尝试了所有其他明智的尝试,因此值得进行测试直接。

此开关:

Invoke-WebRequest -UseBasicParsing ....
Run Code Online (Sandbox Code Playgroud)

避免使用IE引擎并发出HTTP请求并在C#/。Net中处理响应。

折衷方案是您可以使用纯文本结果,并且无法通过HTML DOM访问页面,否getElementByTagName()或需要实时浏览器引擎才能工作。