У меня есть сценарий powershell, который я создал, и есть шаг, на котором он пытается импортировать модуль, если он еще не импортирован.
Try {
Import-Module -Name 'ModuleName' -ErrorAction Stop -ErrorVariable ModFail
}
Catch {
Write-Error "Module failed to be loaded."
}
позже в скрипте я пытаюсь проверить, не удалось ли импортировать модуль, но проверил переменную ошибки. Для других переменных, которые не устанавливаются с помощью параметра errorvariable, я просто использую приведенное ниже, чтобы проверить, имеет ли оно значение null.
If ($null -eq $var) {
Do stuff
}
Но делать это с переменной, которую я установил с помощью errorvariable, не работает.
if ($null -ne $Modfail) {
Do stuff
}
при проверке, действительно ли переменная равна нулю, приведенное выше значение равно true. Это противоположность того, что я хочу. Когда я запускаю переменную, она действительно равна нулю, и запуск
$modfail | Gm
завершается ошибкой, потому что она пуста. Почему это происходит? Если я устанавливаю переменную вне параметра errorvariable или не устанавливаю ее, все возвращается правильно. Даже если у него есть пробел, он должен возвращаться в виде правильной строки при передаче в Get-Member?