【问题标题】:Check url status in PowerShell version 2检查 PowerShell 版本 2 中的 url 状态
【发布时间】:2017-10-22 09:34:11
【问题描述】:

我有以下代码在 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”的异常:“远程服务器返回错误: 未经授权。”

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

【问题讨论】:

    标签: .net powershell-2.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.'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 2018-11-17
      相关资源
      最近更新 更多