如何解决使用Powershell对站点进行向上或向下检查
如何为超过1个站点执行此脚本?我知道每个命令都有一个,但是您能协助我如何为该脚本添加此循环吗?
Begin {
$webRequest = [Net.WebRequest]::Create("http://172.20.1.33:81");
}
Process {
$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.'
}
}
解决方法
您的代码看起来像函数的一部分。您可以将其变成advanced function,并将url设为parameter,该URL可以接受多个值,甚至可以接受管道输入。
ID1
并像这样使用它:
function Test-Url {
param(
[Parameter(Position = 0,Mandatory,ValueFromPipeline)]
[string[]]$Url,[int[]]$ValidStatus = (200,401)
)
process {
foreach ($item in $Url) {
$webRequest = [Net.WebRequest]::Create($item)
try {
$response = $webRequest.GetResponse()
}
catch {
$response = $_.Exception.InnerException.Response
}
$statusCode = $null
if ($response) {
$statusCode = [int]$response.StatusCode
$response.Close()
}
[PSCustomObject]@{
Url = $item
Online = $validStatus -contains $statusCode
StatusCode = $statusCode
}
}
}
}
对于多个站点:
if ((Test-Url "http://172.20.1.33:81").Online) {
Write-Host 'Site is up.'
} else {
Write-Host 'Site is down.'
}
请注意,使用PowerShell的Invoke-WebRequest
也是可以的Test-Url "http://172.20.1.33:81","http://172.20.1.34:81"
# or
"http://172.20.1.33:81","http://172.20.1.34:81" | Test-Url
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。