简单的Powershell IIS站点验证

问题描述 投票:0回答:1

修补后我们结帐流程的一部分是检查Web服务器。我想为每个循环创建一个,运行以下脚本以查找200或401,并在终端消息中弹出带有站点名称的“站点ok消息”。如果还有其他问题,我还希望显示一条错误消息,并提供站点名称。

我知道401响应确实不行,但是我管理的某些网站没有查看的权利。 (因此,这就是为什么我要走这条路线的原因,我从不知道目视检查中“看起来正确”的地方。这是我到目前为止的一切。

    $HTTP_Request = [System.Net.WebRequest]::Create('https://someinternalserver.com')
    $HTTP_Response = $HTTP_Request.GetResponse()
    $HTTP_Status = [int]$HTTP_Response.StatusCode

            If ($HTTP_Status -eq 200) {
            Write-output $http_request | Select-Object RequestUri
            Write-Host "SITE OK! 200"

            If ($HTTP_Status -eq 401) {
            Write-output $http_request | Select-Object RequestUri
            Write_Host "SITE OK! 401"}
        }

        Else {
            Write-output $http_request | Select-Object RequestUri
            Write-Host "SITE DEAD"}

     If ($HTTP_Response -eq $null) { } 

     Else { $HTTP_Response.Close() }

当我运行命令时,我在第5行上收到了我不太在意的错误消息,我该如何抑制它们?理想情况下,我会尽力使它看起来更干净,这样我们就可以滚动查看信息并注意任何不是200或401 results

的服务器

...这在某种程度上起到了作用,但现在我似乎已将其打破,以至于一切恢复为现场死亡。

powershell
1个回答
0
投票

您可以添加一个try / catch。

$HTTP_Request = [System.Net.WebRequest]::Create('http://localhost:8080')
$HTTP_Response
$HTTP_Status
try {
    $HTTP_Response = $HTTP_Request.GetResponse()
    $HTTP_Status = [int]$HTTP_Response.StatusCode
}
catch {

}
If ($HTTP_Status -eq 200) {
    Write-output $http_request | Select-Object RequestUri
    Write-Host "SITE OK! 200"

    If ($HTTP_Status -eq 401) {
        Write-output $http_request | Select-Object RequestUri
        Write_Host "SITE OK! 401"
    }
}

Else {
    Write-output $http_request | Select-Object RequestUri
    Write-Host "SITE DEAD"
}

If ($HTTP_Response -eq $null) { } 
Else { $HTTP_Response.Close() }
© www.soinside.com 2019 - 2024. All rights reserved.