PowerShell
Variables Automatiques
Recherche…
Introduction
Les variables automatiques sont créées et gérées par Windows PowerShell. On a la possibilité d'appeler une variable à peu près n'importe quel nom dans le livre; Les seules exceptions sont les variables déjà gérées par PowerShell. Ces variables seront sans aucun doute les objets les plus répétitifs que vous utiliserez dans PowerShell à côté des fonctions (comme $? - indique le statut Success / Failure de la dernière opération).
Syntaxe
-
$$
- Contient le dernier jeton de la dernière ligne reçue par la session. -
$^
- Contient le premier jeton de la dernière ligne reçue par la session. -
$?
- Contient le statut d'exécution de la dernière opération. -
$_
- Contient l'objet en cours dans le pipeline
$ pid
Contient l'ID de processus du processus d'hébergement en cours.
PS C:\> $pid
26080
Valeurs booléennes
$true
et $false
sont deux variables représentant VRAI et FAUX.
Notez que vous devez spécifier le signe dollar comme premier caractère (différent 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
Notez que lorsque vous utilisez booléen true / false dans votre code, vous écrivez $true
ou $false
, mais lorsque Powershell renvoie un booléen, il ressemble à True
ou False
$ null
$null
est utilisé pour représenter une valeur absente ou indéfinie.
$null
peut être utilisé comme espace réservé vide pour les valeurs vides dans les tableaux:
PS C:\> $array = 1, "string", $null
PS C:\> $array.Count
3
Lorsque nous utilisons le même tableau que la source de ForEach-Object
, il traitera les trois éléments (y compris $ null):
PS C:\> $array | ForEach-Object {"Hello"}
Hello
Hello
Hello
Faites attention! Cela signifie que ForEach-Object
traitera même $null
par lui - même:
PS C:\> $null | ForEach-Object {"Hello"} # THIS WILL DO ONE ITERATION !!!
Hello
Ce qui est un résultat très inattendu si vous le comparez à la boucle foreach
classique:
PS C:\> foreach($i in $null) {"Hello"} # THIS WILL DO NO ITERATION
PS C:\>
$ OFS
La variable appelée Output Field Separator contient une valeur de chaîne utilisée lors de la conversion d'un tableau en chaîne. Par défaut $OFS = " "
( un espace ), mais il peut être modifié:
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
Contient l'objet / élément en cours de traitement par le 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
et $_
sont identiques et peuvent être utilisés indifféremment, mais $_
est de loin le plus utilisé.
$?
Contient le statut de la dernière opération. Lorsqu'il n'y a pas d'erreur, il est défini sur True
:
PS C:\> Write-Host "Hello"
Hello
PS C:\> $?
True
S'il y a une erreur, elle est définie sur 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
$ erreur
Tableau des objets d'erreur les plus récents. Le premier dans le tableau est le plus récent:
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
Conseils d'utilisation: Lorsque vous utilisez la variable $error
dans une applet de commande de format (par exemple, une liste de format), -Force
à utiliser le commutateur -Force
. Sinon, l'applet de commande de format va afficher le contenu d' $error
ci-dessus.
Les entrées d'erreur peuvent être supprimées via par exemple $Error.Remove($Error[0])
.