но это, вероятно, неправильно, потому что я не привел никаких аргументов для Get-Content
Да.Это первая проблема.Посмотрите Get-Help <command>
и или документы, такие как TechNet , когда вы потерялись.Для основных командлетов вы всегда будете видеть примеры.
Second, Get-Content
, возвращает строковые массивы (по умолчанию), поэтому, если вы выполняете числовое сравнение, вам нужно рассматривать значение как таковое.
В-третьих, у вас есть разрыв строки между командлетом foreach-object
и его открывающей скобкой.Это создаст вам проблему с анализом, и PS запросит отсутствующий блок процесса.Таким образом, меняются только упомянутые ....
Get-ChildItem -Path C:\temp_erase\PID -Directory -Filter *.txt | ForEach-Object{
[int]$warning_counter = Get-Content $_.FullName
if ($warning_counter -gt '50')
{
$crit_counter = 1
Write-Host "CRITICAL: Failed to kill service more than 50 times!"
}
}
Одна очевидная вещь, отсутствующая в этом, заключается в том, что вы не показываете, какой файл вызвал сообщение.Вам следует обновить процесс уведомления / вывода.У вас также нет логики для проверки содержимого файла.Может легко произойти сбой, процедурный или программный, для файлов с не числовым содержимым.