Синтаксический анализ не работает правильно для Powershell

Я написал следующую логику для проверки статуса службы:

$status=@()

if($var1 -match "True") {
Write-Output "Service Enabled"
} else {
$status+="Service not Enabled"
Write-Output "Service not Enabled"
}

if($status.count -le 1){
    $returnStatus = "PASS"    
}else{
    $o=$status -join ", "
    $returnStatus = "FAIL- $o"
}

$getstatus = $returnStatus 

Когда я установил $var1 = false, вывод должен быть Service not Enabled, но это неправильно.

Кажется, проблема в том, что $status всегда имеет счет 1даже если он равен PASS. Пожалуйста, предложите, есть ли лучшая логика для выполнения той же логики.


person meallhour    schedule 22.06.2018    source источник
comment
В этом коде нет пути выполнения, который привел бы к записи Service not Enabled на выходе.   -  person alroc    schedule 22.06.2018
comment
я обновил свой вопрос   -  person meallhour    schedule 22.06.2018
comment
Я бы рекомендовал использовать $True и $False (обратите внимание на $). Итак, вы устанавливаете $var1 = $False, а затем тестируете, используя if ($var1), а не -match для строкового значения.   -  person stinkyfriend    schedule 22.06.2018


Ответы (1)


У вас опечатка в имени переменной $returnsStatus/$returnStatus

Что приводит к тому, что окончательный вывод $getstatus несовместим.

Исправьте имя переменной и повторите попытку.

Предложенное решение

$status=@()

if($var1 -match "True") {
    Write-Output "Service Enabled"
} else {
    $status+="Service not Enabled"
    # Fixed Message
    Write-Output "Service not Enabled"
}

# Fix comparison from -le to -lt
if($status.count -lt 1){
    $returnStatus = "PASS"    
}else{
    $o=$status -join ", "
    $returnStatus = "FAIL- $o"
}

$getstatus = $returnStatus 
person Neverever    schedule 22.06.2018
comment
Я получаю тот же результат даже после обновления $returnStatus - person meallhour; 22.06.2018
comment
Кажется, проблема в том, что $status всегда имеет значение 1, даже если оно PASS. Пожалуйста, предложите, есть ли лучшая логика для выполнения той же логики. - person meallhour; 22.06.2018
comment
@meallhour, какой у тебя тот же результат? в обновленном коде вы напечатали одно и то же Service Enabled в двух местах. - person Neverever; 22.06.2018
comment
Обновил мой вопрос. Я получаю Service Enabled в обоих случаях. - person meallhour; 22.06.2018
comment
изменить сравнение с -le (меньше или равно) на -lt (меньше) - person Neverever; 22.06.2018