Invoke-WebRequest错误

时间:2017-10-10 20:42:04

标签: powershell

最近升级到系统管理员,我真的只是设置。我们有一个PowerShell脚本用于检查某些服务。似乎适用于所有其他管理员。我认为这是权限,但是想在这里查看我是否遗漏了任何东西。

Powershell脚本

Import-Module WebAdministration -ErrorAction SilentlyContinue 


#Change the location to match your file.
$ServerLocation = "C:\Scripts\Servers"
$StartTime = Get-Date


$ServerName = Get-Content "$ServerLocation\ServerText.txt"


ForEach ($Server in $ServerName)
{
   #$Server = "ServerPD20" 
   #Invoke-WebRequest -Uri http://$Server/ServerService/ServerCalculator.svc | Select StatusDescription
   Write-Host $Server -ForegroundColor Cyan
   $Check = Invoke-WebRequest -Uri http://$Server/ServerService/ServerCalculator.svc
   If($Check.StatusDescription -eq 'OK')
   {
      Write-Host "Server Calculator Service is:" $Check.StatusDescription
      Write-Host "Status Code:" $Check.StatusCode
      $Time = (Measure-Command {Invoke-WebRequest -Uri http://$Server/ServerService/ServerCalculator.svc}).TotalSeconds
      Write-Host "Total Request Time: $Time seconds" `n -ForegroundColor Gray
   }
   ElseIf($Check.StatusDescription -ne 'OK')
   {
      Write-Host "Server Calculator Service is NOT ONLINE" -ForegroundColor Red
      Write-Host "Status Code:" $Check.StatusCode `n
   }
}
$RunTime = Get-Date
Write-Host `n"Start Time" $StartTime
Write-Host "Run Time: "$RunTime -ForegroundColor Yellow

我得到的输出

Invoke-WebRequest : The response content cannot be parsed because the Internet Explorer engine is not available, or  Internet Explorer's first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again.  At C:\Scripts\Folder\CalculatorCheck.ps1:17 char:13
+    $Check = Invoke-WebRequest -Uri http://$Server/ServerCalculator ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotImplemented: (:) [Invoke-WebRequest], NotSupportedException
    + FullyQualifiedErrorId : WebCmdletIEDomNotSupportedException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

有两点需要注意。

我使用相同的帐户登录了所有四个框,我正在运行powershell脚本。我正确地点击并以其他用户身份运行。我输入的用户名是我登录到所有4台服务器并确保IE已被打开的用户名。

如果我在“$ Check = Invoke-WebRequest -Uri http://$Server/ServerService/ServerCalculator.svc”之后添加-UseBasicParsing,我能够得到我正在寻找的响应。但我仍然收到错误IE首次启动。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您是否在运行此脚本的计算机上打开了Internet Explorer?

Invoke-WebRequest使用Internet Explorer,并且在您至少打开一次并取消一次运行弹出窗口之前,它通常无法工作。

您可以通过添加-UseBasicParsing开关来解决这个问题,您需要将其添加到Invoke-WebRequest所有实例中(不仅仅是第一个......我算了二,在你的样本中忽略注释掉的那个。)

或者,您可以use a GPO to disable首先在IE中运行。

答案 1 :(得分:0)

如果使用admin打开PowerShell会话,则也必须使用admin打开IE浏览器,否则它将无法识别彼此。