Цикл по массиву и возвращение результатов каждого объекта в Powershell - PullRequest
0 голосов
/ 23 мая 2018

Мне нужна помощь со следующим кодом PS:

$site1 = "www.site1.com"
$site2 = "www.site2.com"
$site3 = "www.site3.com"
$sites = $site1,$site2,$site3
$request = foreach ($site in $sites) {invoke-webrequest $site -method head}
if ($request.StatusCode -ne "200"){write-host "site is not working"}

Фактический вывод $ request возвращает заголовки всех 3 сайтов, так как я могу получить точный сайт, который не прошел тест?

Заранее спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Попробуйте что-то вроде этого:

"www.site1.com","www.site2.com", "www.site3.com" |
    ForEach-Object {
        $response = Invoke-WebRequest $_ -Method Head

        [PsCustomObject]@{
            Site = $_
            StatusCode = $response.StatusCode
        }
    }

Вы можете отфильтровать вывод, добавив следующее после последней скобки:

| Where-Object StatusCode -ne 200
...