我有以下代码来检查PowerShell版本2中的网站状态。
Begin {
$webRequest = [Net.WebRequest]::Create("http://webdesa2:2003/Login.aspx");
}
Process {
try {
if ((($webRequest.GetResponse()).Statuscode) -as [int] -eq 200) {
Write-Host "Site is Up";
$webrequest.GetResponse();
} else {
Write-Host -Fore Red "Site is Down"
}
} catch {
Write-Host -Fore Red "Site is Down"
}
}
但是在执行上面的代码时我得到了以下输出。
使用“0”参数调用“GetResponse”的异常:“远程服务器返回错误:< 401> Unauthorized。”
此代码在不需要身份验证的网站上运行良好。我的目的是检查网站是否已启动。
答案 0 :(得分:1)
捕获错误并检查状态代码是否为401。
try {
$response = $webRequest.GetResponse()
if ($response.StatusCode.value__ -eq 200) {
Write-Host 'Site is up.'
} else {
Write-Host 'Site is down.'
}
} catch {
if ($_.Exception.InnerException.Response.StatusCode.value__ -eq 401) {
Write-Host 'Site is up.'
} else {
Write-Host 'Site is down.'
}
}
修改:简化代码:
$validStatus = 200, 401
try {
$status = $webRequest.GetResponse().StatusCode.value__
} catch {
$status = $_.Exception.InnerException.Response.StatusCode.value__
}
if ($validStatus -contains $status) {
Write-Host 'Site is up.'
} else {
Write-Host 'Site is down.'
}