7

我有一个应该Invoke-WebRequest针对站点运行的 Powershell 脚本。我想将此脚本与 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 上。

4

1 回答 1

14

[将我的评论变成答案]

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

这个开关:

Invoke-WebRequest -UseBasicParsing ....

避开 IE 引擎并发出 HTTP 请求并在 C#/.Net 中处理所有响应。

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

于 2018-05-10T13:27:16.410 回答