检查PowerShell版本2中的URL状态

时间:2017-05-22 16:20:54

标签: .net powershell-v2.0

我有以下代码来检查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。”

此代码在不需要身份验证的网站上运行良好。我的目的是检查网站是否已启动。

1 个答案:

答案 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.'
}