Suche…


Einführung

Automatische Variablen werden von Windows PowerShell erstellt und verwaltet. Man hat die Möglichkeit, eine Variable fast jeden Namen im Buch aufzurufen. Die einzigen Ausnahmen sind die Variablen, die bereits von PowerShell verwaltet werden. Diese Variablen sind ohne Zweifel die am häufigsten wiederkehrenden Objekte, die Sie in PowerShell neben Funktionen verwenden (z. B. $? - zeigt den Status des letzten Vorgangs an.

Syntax

  • $$ - Enthält das letzte Token in der letzten von der Sitzung empfangenen Zeile.
  • $^ - Enthält das erste Token in der letzten Zeile, die von der Sitzung empfangen wurde.
  • $? - Enthält den Ausführungsstatus der letzten Operation.
  • $_ - Enthält das aktuelle Objekt in der Pipeline

$ pid

Enthält die Prozess-ID des aktuellen Hosting-Prozesses.

PS C:\> $pid
26080

Boolesche Werte

$true und $false sind zwei Variablen, die logisch TRUE und FALSE darstellen.

Beachten Sie, dass Sie das Dollarzeichen als erstes Zeichen angeben müssen (was sich von C # unterscheidet).

$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

Beachten Sie, dass Sie bei der Verwendung von boolean true / false in Ihrem Code $true oder $false schreiben. Wenn Powershell jedoch einen boolean zurückgibt, sieht es aus wie True oder False

$ null

$null wird verwendet, um einen abwesenden oder undefinierten Wert darzustellen.
$null kann als leerer Platzhalter für leere Werte in Arrays verwendet werden:

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

Wenn wir dasselbe Array als Quelle für ForEach-Object , werden alle drei Elemente (einschließlich $ null) verarbeitet:

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

Achtung! Das bedeutet , dass ForEach-Object - Prozess wird auch $null ganz von selbst:

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

Das ist ein sehr unerwartetes Ergebnis, wenn Sie es mit der klassischen foreach Schleife vergleichen:

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

$ OFS

Variable mit dem Namen Ausgabefeldtrennzeichen enthält einen Zeichenfolgewert, der beim Konvertieren eines Arrays in einen String verwendet wird. Standardmäßig ist $OFS = " " ( ein Leerzeichen ), es kann jedoch geändert werden:

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

Enthält das Objekt / Element, das gerade von der Pipeline verarbeitet wird.

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 und $_ sind identisch und können austauschbar verwendet werden, aber $_ wird bei weitem am häufigsten verwendet.

$?

Enthält den Status der letzten Operation. Wenn es keinen Fehler gibt, wird es auf True :

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

Wenn ein Fehler vorliegt, wird er auf 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

$ Fehler

Array der neuesten Fehlerobjekte. Der erste im Array ist der neueste:

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

Hinweise zur Verwendung: Wenn Sie die Variable $error in einem Format-Cmdlet (z. B. format-list) verwenden, müssen Sie die -Force . Andernfalls gibt das Format-Cmdlet den $error Inhalt wie oben angegeben aus.

$Error.Remove($Error[0]) können über zB $Error.Remove($Error[0]) .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow