我希望能够获得Invoke-WebRequest的结果,并让我的脚本在服务器未到达时打印“ Failed”(失败),或者在服务器到达时显示“ Online”(在线)。
这就是我要做的。
$IW_Results = $Servers_to_Check | ForEach-Object { Invoke-WebRequest -Uri $_ }
$err = $IW_Results | ?{$_.gettype().Name -eq "ErrorRecord"}
if($err){
Write-Output "Failed"
}
else {
Write-Output "Online"
}
如果可以访问服务器,我能够获得脚本以打印“在线”。但是,当无法访问它时,我的脚本将不会显示“失败”。相反,它将给我错误:
Invoke-WebRequest : Unable to connect to the remote server
At C:\Users\admin\Documents\VM-scripts\VM-tester.ps1:32
char:52
+ ... ts = $Servers_to_Check | ForEach-Object { Invoke-WebRequest -Uri $_ }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:Htt
pWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
ll.Commands.InvokeWebRequestCommand
如何获取脚本以打印出“失败”而不是此错误消息?
另外$Servers_to_Check
变量是多个服务器
答案 0 :(得分:1)
您需要尝试捕获
$Servers_to_Check = "google.com", "asdasdf.asdfaa.sdf","yahoo.com"
$IW_Results = $Servers_to_Check | ForEach-Object {
try{
Invoke-WebRequest -Uri $_ | Out-Null
"Online"
}catch{
"Failed"
}
}
$IW_Results