variables - switch - powershell probando una variable que aún no se ha asignado
sentencia if en powershell (3)
Quiero probar para ver si a una variable se le ha asignado una variable y, si no, a realizar una acción. ¿Cómo se puede lograr esto?
Lo intenté con el siguiente código pero recibí el error: El operando derecho de ''-is'' debe ser un tipo.
$ ProgramName no está asignado en este punto.
If ($ProgramName -isnot $null) {
$ProgramName = $ProgramName + '', '' + $cncPrograms
}
Else {
If ($cncPrograms -isnot $null) {
$ProgramName = $cncPrograms
}
}
Cualquier variable no asignada tendrá un valor de nulo, no un tipo de datos de nulo. Entonces, solo haz esto:
If ($ProgramName -ne $null)
... que devolverá TRUE
si ha sido asignado a un valor no nulo.
Un control aún más fácil de hacer es
IF($ProgramName)
Que comprobará si es $null
o no, aunque la lógica está invertida, por lo que podría usar
IF(!$ProgramName)
Editar:
Ruffin plantea un buen punto sobre el modo estricto en los comentarios. Este método funcionará también:
Test-Path variable:ProgramName
o Test-Path variable:global:ProgramName
si tiene un ámbito global explícito, por ejemplo. Esto devolverá $true
o $false
dependiendo de si la variable existe.
Para construir sobre las respuestas (correctas) de JNK y David, consulte esta gran publicación de Jeffrey Snover que lo guía a través de todos los casos de uso de expresiones booleanas en PoweShell. Concluye con cómo probar la existencia de una variable.
http://blogs.msdn.com/b/powershell/archive/2006/12/24/boolean-values-and-operators.aspx
Test-Path variable:/var
debería hacer lo que quiera, supongo.