使用 powershell 检查 uri 内容并警告字符串匹配

check uri content with powershell and alert for string match

我正在执行这段代码:

$web = Invoke-WebRequest http://x.x.x.x:60210/CoreApi/api/Healthcheck
$web.tostring()

$web中的响应如下。

HealthStatus:DBConnectionSuccess:True EventStoreConnectionSuccess:True UnpublishedEvents:0 AzureBusConnectionSuccess:True Errors:NONE

我需要为条件 UnpublishedEvents 创建警报:[>10]。谁能帮我解决字符串匹配逻辑问题。

您可以使用带有命名捕获组的正则表达式来执行此操作,如下所示:

$input = "HealthStatus:DBConnectionSuccess:True EventStoreConnectionSuccess:True UnpublishedEvents:20 AzureBusConnectionSuccess:True Errors:NONE"
$isMatch = $input -match "UnpublishedEvents:(?<UnpubEventCount>\d+)"
if ($isMatch)
{
    return $Matches.UnpubEventCount -gt 10
}
else
{
    Write-Error "UnpublishedEvents not found"
}

$Matches 是使用 -match 运算符时设置的 "magic" 变量。

这是一个使用正则表达式的基本解决方案:

$output = 'HealthStatus:DBConnectionSuccess:True EventStoreConnectionSuccess:True UnpublishedEvents:11 AzureBusConnectionSuccess:True Errors:NONE'

$unpublishedEvents = 0

$regex = 'UnpublishedEvents:([0-9]+)'

$match = [regex]::match($output, $regex)
if ($match.Success)
{
  $unpublishedEvents = $match.Groups[1].Value
}

if ($unpublishedEvents -gt 10)
{
  Write-Host "Some alert! ($unpublishedEvents events)"
}