Buscar..


Introducción

Las variables automáticas son creadas y mantenidas por Windows PowerShell. Uno tiene la capacidad de llamar a una variable casi cualquier nombre en el libro; Las únicas excepciones a esto son las variables que ya están siendo administradas por PowerShell. Estas variables, sin duda, serán los objetos más repetitivos que utilice en PowerShell junto a las funciones (como $? - indica el estado de éxito / falla de la última operación)

Sintaxis

  • $$ - Contiene el último token en la última línea recibida por la sesión.
  • $^ : Contiene el primer token en la última línea recibida por la sesión.
  • $? - Contiene el estado de ejecución de la última operación.
  • $_ - Contiene el objeto actual en la tubería

$ pid

Contiene el ID de proceso del proceso de alojamiento actual.

PS C:\> $pid
26080

Valores booleanos

$true y $false son dos variables que representan lógicas VERDADERO y FALSO.

Tenga en cuenta que debe especificar el signo de dólar como primer carácter (que es diferente de C #).

$boolExpr = "abc".Length -eq 3 # length of "abc" is 3, hence $boolExpr will be True
if($boolExpr -eq $true){
    "Length is 3"
}
# result will be "Length is 3" 
$boolExpr -ne $true
#result will be False

Tenga en cuenta que cuando utiliza booleano verdadero / falso en su código, escribe $true o $false , pero cuando Powershell devuelve un valor booleano, parece True o False

$ nulo

$null se utiliza para representar el valor ausente o indefinido.
$null se puede usar como un marcador de posición vacío para el valor vacío en las matrices:

PS C:\> $array = 1, "string", $null
PS C:\> $array.Count
3

Cuando usamos la misma matriz que la fuente para ForEach-Object , procesará los tres elementos (incluido $ null):

PS C:\> $array | ForEach-Object {"Hello"}
Hello
Hello
Hello

¡Ten cuidado! Esto significa que ForEach-Object procesará incluso $null por sí mismo:

PS C:\> $null | ForEach-Object {"Hello"} # THIS WILL DO ONE ITERATION !!!
Hello

Lo que es un resultado muy inesperado si lo comparas con el bucle foreach clásico:

PS C:\> foreach($i in $null) {"Hello"} # THIS WILL DO NO ITERATION
PS C:\>

$ OFS

La variable llamada Output Field Separator contiene un valor de cadena que se utiliza al convertir una matriz en una cadena. Por defecto $OFS = " " ( un espacio ), pero se puede cambiar:

PS C:\> $array = 1,2,3
PS C:\> "$array" # default OFS will be used
1 2 3
PS C:\> $OFS = ",." # we change OFS to comma and dot
PS C:\> "$array"
1,.2,.3

$ _ / $ PSItem

Contiene el objeto / elemento que está siendo procesado actualmente por la canalización.

PS C:\> 1..5 | % { Write-Host "The current item is $_" }
The current item is 1
The current item is 2
The current item is 3
The current item is 4
The current item is 5

$PSItem y $_ son idénticos y se pueden usar indistintamente, pero $_ es, con mucho, el más utilizado.

PS

Contiene el estado de la última operación. Cuando no hay error, se establece en True :

PS C:\> Write-Host "Hello"
Hello
PS C:\> $?
True

Si hay algún error, se establece en False :

PS C:\> wrt-host
wrt-host : The term 'wrt-host' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ wrt-host
+ ~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (wrt-host:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\> $?
False

$ error

Matriz de los objetos de error más recientes. El primero en la matriz es el más reciente:

PS C:\> throw "Error" # resulting output will be in red font
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Error:String) [], RuntimeException
    + FullyQualifiedErrorId : Error

PS C:\> $error[0] # resulting output will be normal string (not red    )
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Error:String) [], RuntimeException
    + FullyQualifiedErrorId : Error

Consejos de uso: cuando use la variable $error en un cmdlet de formato (por ejemplo, format-list), tenga en cuenta que use el interruptor -Force . De lo contrario, el cmdlet de formato generará el contenido de $error en la forma mostrada anteriormente.

Las entradas de error pueden eliminarse, por ejemplo, $Error.Remove($Error[0]) .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow