Ricerca…


introduzione

Le variabili automatiche sono create e gestite da Windows PowerShell. Si ha la possibilità di chiamare una variabile praticamente qualsiasi nome nel libro; Le uniche eccezioni a questo sono le variabili che sono già state gestite da PowerShell. Queste variabili, senza dubbio, saranno gli oggetti più ripetitivi che si usano in PowerShell accanto alle funzioni (come $? - indica lo stato Success / Failure dell'ultima operazione)

Sintassi

  • $$ - Contiene l'ultimo token nell'ultima riga ricevuta dalla sessione.
  • $^ - Contiene il primo token nell'ultima riga ricevuta dalla sessione.
  • $? - Contiene lo stato di esecuzione dell'ultima operazione.
  • $_ - Contiene l'oggetto corrente nella pipeline

$ pid

Contiene l'ID di processo del processo di hosting corrente.

PS C:\> $pid
26080

Valori booleani

$true e $false sono due variabili che rappresentano logico TRUE e FALSE.

Si noti che è necessario specificare il simbolo del dollaro come primo carattere (che è diverso da 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

Si noti che quando si utilizza il valore booleano vero / falso nel codice si scrive $true o $false , ma quando Powershell restituisce un valore booleano, appare come True o False

$ null

$null viene utilizzato per rappresentare il valore assente o non definito.
$null può essere usato come segnaposto vuoto per il valore vuoto negli array:

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

Quando utilizziamo la stessa matrice dell'origine per ForEach-Object , elaborerà tutti e tre gli elementi (incluso $ null):

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

Stai attento! Ciò significa che ForEach-Object elaborerà anche $null tutto da solo:

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

Il che è un risultato molto inaspettato se lo si confronta con il ciclo foreach classico:

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

$ OFS

La variabile chiamata Output Field Separator contiene il valore di stringa che viene utilizzato durante la conversione di una matrice in una stringa. Di default $OFS = " " ( uno spazio ), ma può essere modificato:

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 l'oggetto / oggetto attualmente in fase di elaborazione dalla pipeline.

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 e $_ sono identici e possono essere usati in modo intercambiabile, ma $_ è di gran lunga il più usato.

$?

Contiene lo stato dell'ultima operazione. Quando non ci sono errori, è impostato su True :

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

Se c'è qualche errore, è impostato su 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

Matrice degli oggetti di errore più recenti. Il primo nell'array è il più recente:

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

Suggerimenti per l'utilizzo: quando si utilizza la variabile $error in un cmdlet di formato (ad esempio format-list), prestare attenzione all'utilizzo dell'interruttore -Force . In caso contrario, il cmdlet di formato produrrà i contenuti $error in modo sopra illustrato.

Le voci di errore possono essere rimosse tramite ad esempio $Error.Remove($Error[0]) .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow