В Powershell v3.0 я хотел бы вернуть код ответа из HTTP GET, например 200 OK или 500 Internal Server Error. (Это для взлома-развертывания, чтобы быстро развернуть развернутый сайт и посмотреть, работает ли он, своего рода мини-приемочный тест. Код состояния - это все, что я хочу.)
Против моих пожеланий HttpWebRequest.GetResponse выдает сообщение об ошибке, когда он получает 500 Internal Server Error. Это раздражает, потому что это не ошибка для меня в моем случае использования. Во всяком случае, я решил, что могу поймать исключение и все еще очистить базовый код ответа, но у меня проблемы с этим.
Вот несколько почти рабочий код:
function WebResponseStatusCode (
[Parameter(Mandatory=$true)][string] $url
) {
$req = [system.Net.HttpWebRequest]::Create($url)
try {
$res = $req.GetResponse();
$statuscode = $res.statuscode;
}
catch [System.Net.WebException] {
#the outer error is a System.Management.Automation.ErrorRecord
Write-Host "error!"
return = $_.Response.statuscode; #nope
}
finally {
if (!($res -eq $null)) {
$res.Close();
}
}
return $statuscode;
}
Проблема, конечно, в том, что $_ не имеет свойства Response. Также $_.InnerException, даже при нажатии:
return [System.Net.WebException]($_.InnerException)
Я играл с $_ | Get-Member и изучал все его свойства. Я думал, что у $_.TargetObject есть некоторые обещания, но это не похоже на.
(Обновить). Я также думаю, что я пробовал варианты на $_.Exception.Response, хотя, возможно, неправильно.
Получение просто кода ответа кажется таким простым делом.