代码之家  ›  专栏  ›  技术社区  ›  Shawn L.

Powershell调用webrequest不工作

  •  7
  • Shawn L.  · 技术社区  · 6 年前

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

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

    我把范围缩小到了一行,

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

    无论出于何种原因,在使用此帐户时, 调用WebRequest 不起作用。当运行该行时,它不会生成任何内容,没有错误、警告或输出。二者都 $uri $body 变量也已定义。

    即使我使用本地admin PRTG帐户登录到probe服务器,并作为另一个用户运行Powershell(使用我自己的凭据),它仍然无法生成任何内容。

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

    1 回复  |  直到 6 年前
        1
  •  14
  •   TessellatingHeckler    6 年前

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

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

    此开关:

    Invoke-WebRequest -UseBasicParsing ....
    

    避免IE引擎,发出HTTP请求并处理响应,所有这些都在C#/。网

    取舍是,您可以使用纯文本结果,但不能通过HTML DOM访问页面,不是吗 getElementByTagName() 或者任何需要实时浏览器引擎才能工作的东西。