修补后我们结帐流程的一部分是检查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
的服务器...这在某种程度上起到了作用,但现在我似乎已将其打破,以至于一切恢复为现场死亡。
您可以添加一个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() }