Скрипт PowerShell неправильно принимает аргумент - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь, чтобы NCPA выполнял сценарий PowerShell на сервере, предоставляя ему аргументы.Я сделал это раньше и у меня есть 3 различных сценария, которые ведут себя как ожидалось.На этот раз нет.

Для краткости я пытаюсь использовать Get-Counter, чтобы получить счетчик производительности и указать путь в качестве аргумента.

В настоящее время скрипт выглядит такthis:

$count = $args[0]
$warn = 1500
$crit = 2000
$Data = Get-Counter -Counter $count
$Raw = $Data.CounterSamples.CookedValue

Write-Host "$Raw | 'Counter'=$Raw;$warn;$crit;0;3000"

if ($Raw -gt $crit) {
    exit 2
} elseif ($Raw -gt $warn) {
    exit 1
} else {
    exit 0
}

Это вызывается с сервера Nagios через:

/usr/local/nagios/libexec/check_ncpa.py -H 192.168.**.** -t 'randomkeystringstuff' -P 5693 -M plugins/counter.ps1 -a "'\Processor Information(_Total)\% Processor Time'"

Заполнение переменной count непосредственно в скрипте работает.Затем я также могу выполнить это через Nagios без ошибок.Но использование аргумента возвращает

Get-Counter: внутренний вызов API счетчика производительности не выполнен.Ошибка: c0000bc4.

Что является идентичной ошибкой, когда вы указываете несуществующий путь.

Поскольку метод аргументов отлично работает в трех других сценариях, япри условии, что какая-то строка или несоответствие типов или что-то подобное.

1 Ответ

0 голосов
/ 31 января 2019

Простое предположение состоит в том, чтобы удалить одинарную кавычку в аргументе

"'\Processor Information(_Total)\% Processor Time'"
->
"\Processor Information(_Total)\% Processor Time"

-> '\ Processor Information (_Total) \% Processor Time' <- по-видимому, недопустимый счетчик. </p>

...