Powershell调用webrequest无法正常工作

时间:2018-05-09 17:24:16

标签: windows powershell server prtg

我有一个Powershell脚本应该针对某个站点运行Invoke-WebRequest。我想将此脚本与PRTG网络监视器一起使用,以确保Web服务器正常运行。

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

我已将它缩小到一行,

Invoke-WebRequest $uri -Method POST -Body $body -TimeoutSec 10

看来无论出于何种原因,使用此帐户时,Invoke-WebRequest都无效。在运行该行时,它不会产生任何内容,也不会产生错误,警告或输出。 $uri$body变量也已定义。

即使我使用本地管理员PRTG帐户登录探测服务器并以另一个用户身份运行Powershell(使用我自己的凭据),它仍然无法生成任何内容。

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

1 个答案:

答案 0 :(得分:5)

[将我的评论转化为答案]

在Windows PowerShell中,Invoke-WebRequest使用Internet Explorer引擎来解析网站,除非您告诉它不要。 IE有很多限制 - 来自其可信站点/安全区域的安全模型,IE增强安全性,组策略覆盖,可能更多,看起来你尝试了其他一切合理的,值得尝试直接测试。

此开关:

Invoke-WebRequest -UseBasicParsing ....

避免使用IE引擎并发出HTTP请求并在C#/ .Net。

中处理所有响应

权衡是您可以获得纯文本结果,并且无法通过HTML DOM访问该页面,没有getElementByTagName()或任何需要实时浏览器引擎才能工作的内容。