Zoeken…


Invoering

Automatische variabelen worden gemaakt en onderhouden door Windows PowerShell. Men heeft de mogelijkheid om een variabele zo ongeveer elke naam in het boek te noemen; De enige uitzonderingen hierop zijn de variabelen die al door PowerShell worden beheerd. Deze variabelen zullen ongetwijfeld de meest repetitieve objecten zijn die u in PowerShell gebruikt naast functies (zoals $? - geeft de status Succes / Mislukking van de laatste bewerking aan)

Syntaxis

  • $$ - Bevat het laatste token in de laatste regel die door de sessie is ontvangen.
  • $^ - Bevat het eerste token in de laatste regel die door de sessie is ontvangen.
  • $? - Bevat de uitvoeringsstatus van de laatste bewerking.
  • $_ - Bevat het huidige object in de pijplijn

$ pid

Bevat proces-ID van het huidige hostingproces.

PS C:\> $pid
26080

Booleaanse waarden

$true en $false zijn twee variabelen die logisch WAAR en ONWAAR vertegenwoordigen.

Merk op dat u het dollarteken moet opgeven als het eerste teken (dat verschilt van 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

Merk op dat wanneer u boolean true / false in uw code gebruikt, u $true of $false schrijft, maar wanneer Powershell een boolean retourneert, ziet het eruit als True of False

$ null

$null wordt gebruikt om afwezige of ongedefinieerde waarde weer te geven.
$null kan worden gebruikt als een lege tijdelijke aanduiding voor lege waarde in arrays:

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

Wanneer we dezelfde array gebruiken als de bron voor ForEach-Object , worden alle drie de items (inclusief $ null) verwerkt:

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

Doe voorzichtig! Dit betekent dat ForEach-Object zelf $null ZAL verwerken:

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

Wat een zeer onverwacht resultaat is als je het vergelijkt met de klassieke foreach lus:

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

$ OFS

Variabele met de naam Output Field Separator bevat een tekenreekswaarde die wordt gebruikt bij het converteren van een array naar een tekenreeks. Standaard $OFS = " " ( een spatie ), maar dit kan worden gewijzigd:

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

Bevat het object / item dat momenteel door de pijplijn wordt verwerkt.

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 en $_ zijn identiek en kunnen door elkaar worden gebruikt, maar $_ is verreweg het meest gebruikt.

$?

Bevat de status van de laatste bewerking. Als er geen fout is, is deze ingesteld op True :

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

Als er een fout is, is deze ingesteld op 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

Matrix van meest recente foutobjecten. De eerste in de array is de meest 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

Gebruikstips: -Force bij gebruik van de $error variabele in een formaat-cmdlet (bijv. Format-list) op de schakelaar -Force . Anders zal het formaat cmdlet de $error inhoud op de hierboven getoonde manier uitvoeren.

Foutmeldingen kunnen worden verwijderd via bijvoorbeeld $Error.Remove($Error[0]) .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow