Как добавить элементы в массив в функции в качестве переменной сценария на Powershell? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь добавить элементы в переменную массива, которую я объявляю вне функции.

Вот идея моего кода в очень упрощенном виде:

function Test($NAME, $SPEED){
$fName = "testName"
$fSpeed = 100

if($status = ($fName -eq $NAME) -and ($fSpeed -eq $SPEED))
{}

else{
if($fName -ne $NAME)
{$errorMessages += "The name is not" + $NAME}

if($fSpeed -ne $SPEED)
{$errorMessages += "The speed is not" + $SPEED}
}
return $status
}

$script:errorMessages=@()
$result=@()

$result += Test -NAME "alice" -SPEED "100"
$result += Test -NAME "bob" -SPEED "90"
#result is an array of booleans that I need later on

$errorMessages

Когда я отображаю $ errorMessages, это ожидаемый результат, который я хотел бы:

The name is not alice
The name is not bob
The speed is not 90

Однако, когда я пытаюсь отобразить переменную вне функции и даже за пределами блока else, ничего не выводится. Как правильно добавить сообщения об ошибках в массив?

1 Ответ

1 голос
/ 02 мая 2019

Вы хотите вызвать errorMessages через область действия скрипта.Поэтому вы должны использовать $script:errorMessage (вместо $errorMessage) внутри вашей функции.

function Test($NAME, $SPEED) {
   $fName = "testName"
   $fSpeed = 100
   $status = ($fName -eq $NAME) -and ($fSpeed -eq $SPEED)
   if (!$status) { 

       if ($fName -ne $NAME) { 
           $script:errorMessages += "The name is not" + $NAME 
       }

       if ($fSpeed -ne $SPEED) { 
           $script:errorMessages += "The speed is not" + $SPEED 
       }
   }
   $status
}

$errorMessages = @()
$result = @()

$result += Test -NAME "alice" -SPEED "100"
$result += Test -NAME "bob" -SPEED "90"
#result is an array of booleans that I need later on

$errorMessages

Теперь вы получите ожидаемый результат:

The name is notalice
The name is notbob
The speed is not90

Также будьте в курсеreturn инструкция в PowerShell -> stackoverflow ответ

Надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...