检查 PowerShell 版本 2 中的 URL 状态



>我有以下代码来检查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>未经授权。

此代码在不需要身份验证的网站上效果很好。我的目的是检查网站是否启动。

捕获错误并检查状态代码是否为 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.'
}

最新更新