Как изменить вывод Invoke-WebRequest? - PullRequest
0 голосов
/ 30 января 2019

Я хочу иметь возможность получить результаты Invoke-WebRequest и распечатать мой скрипт либо «Сбой», если сервер не был достигнут, либо «Онлайн», если он был достигнут.

Это то, что я делаю, чтобы попытаться это сделать.

 $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"
 }

Мне удалось заставить скрипт напечатать "Online", если сервер достигнут.Однако, когда это не может быть достигнуто, мой скрипт не напечатает «Failed».Вместо этого он выдаст мне ошибку:

 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

Как мне заставить скрипт распечатать "Failed" вместо этого сообщения об ошибке?

Также переменная $Servers_to_Check - это несколько серверов

1 Ответ

0 голосов
/ 30 января 2019

Вам нужен Попробуй поймать

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...