我有一个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上发生的。
答案 0 :(得分:5)
[将我的评论转化为答案]
在Windows PowerShell中,Invoke-WebRequest
使用Internet Explorer引擎来解析网站,除非您告诉它不要。 IE有很多限制 - 来自其可信站点/安全区域的安全模型,IE增强安全性,组策略覆盖,可能更多,看起来你尝试了其他一切合理的,值得尝试直接测试。
此开关:
Invoke-WebRequest -UseBasicParsing ....
避免使用IE引擎并发出HTTP请求并在C#/ .Net。
中处理所有响应权衡是您可以获得纯文本结果,并且无法通过HTML DOM访问该页面,没有getElementByTagName()
或任何需要实时浏览器引擎才能工作的内容。