Подтвердить что ты не робот

Powershell тестирует переменную, которая еще не назначена

Я хочу проверить, была ли переменная назначена переменная и если она не выполняется. Как это можно достичь?

Я попытался выполнить следующий код, но получаю ошибку: правый операнд '-is' должен быть типом.

$Имя_программы не назначено на данный момент.

If ($ProgramName -isnot $null) {
    $ProgramName = $ProgramName + ', ' + $cncPrograms
}
Else {
    If ($cncPrograms -isnot $null) {
    $ProgramName = $cncPrograms 
    }
}
4b9b3361

Ответ 1

Любая неназначенная переменная будет иметь значение null, а не тип данных null. Итак, просто сделайте следующее:

If ($ProgramName -ne $null)

..., который вернет TRUE, если ему присвоено ненулевое значение.

Еще проще проверить, что

IF($ProgramName)

Что будет проверять, является ли это $null или нет, хотя логика отменена, поэтому вы можете использовать

IF(!$ProgramName)

Edit:

Ruffin поднимает хороший момент в отношении strictmode в комментариях. Этот метод также будет работать:

Test-Path variable:ProgramName или Test-Path variable:global:ProgramName, если он явно связан с глобальной областью, например. Это вернет $true или $false в зависимости от того, существует ли переменная.

Ответ 2

Test-Path variable:\var должен делать то, что вы хотите, я думаю.

Ответ 3

Чтобы основываться на правильных ответах от JNK и David, ознакомьтесь с этим замечательным сообщением в блоге от Джеффри Сновера, в котором вы просматриваете все варианты использования булевых выражений в PoweShell. Он заключает, как проверить существование переменной.

http://blogs.msdn.com/b/powershell/archive/2006/12/24/boolean-values-and-operators.aspx