about_Variables

Korte beschrijving

Beschrijft hoe variabelen waarden opslaan die kunnen worden gebruikt in PowerShell.

Lange beschrijving

U kunt alle typen waarden opslaan in PowerShell-variabelen. Sla bijvoorbeeld de resultaten van opdrachten op en sla elementen op die worden gebruikt in opdrachten en expressies, zoals namen, paden, instellingen en waarden.

Een variabele is een eenheid geheugen waarin waarden worden opgeslagen. In PowerShell worden variabelen vertegenwoordigd door tekenreeksen die beginnen met een dollarteken ($), zoals $a, $processof $my_var.

Namen van variabelen zijn niet hoofdlettergevoelig en kunnen spaties en speciale tekens bevatten. Maar variabelenamen die speciale tekens en spaties bevatten, zijn moeilijk te gebruiken en moeten worden vermeden. Zie Variabelenamen met speciale tekens voor meer informatie.

Er zijn verschillende typen variabelen in PowerShell.

  • Door de gebruiker gemaakte variabelen: door de gebruiker gemaakte variabelen worden gemaakt en onderhouden door de gebruiker. De variabelen die u op de PowerShell-opdrachtregel maakt, bestaan standaard alleen terwijl het PowerShell-venster is geopend. Wanneer de PowerShell-vensters zijn gesloten, worden de variabelen verwijderd. Als u een variabele wilt opslaan, voegt u deze toe aan uw PowerShell-profiel. U kunt ook variabelen maken in scripts met globaal, script of lokaal bereik.

  • Automatische variabelen: met automatische variabelen wordt de status van PowerShell opgeslagen. Deze variabelen worden gemaakt door PowerShell en PowerShell wijzigt de waarden naar behoefte om de nauwkeurigheid te behouden. Gebruikers kunnen de waarde van deze variabelen niet wijzigen. De $PSHOME variabele slaat bijvoorbeeld het pad op naar de Installatiemap van PowerShell.

    Zie about_Automatic_Variables voor meer informatie, een lijst en een beschrijving van de automatische variabelen.

  • Voorkeursvariabelen: Voorkeursvariabelen slaan gebruikersvoorkeuren op voor PowerShell. Deze variabelen worden gemaakt door PowerShell en worden gevuld met standaardwaarden. Gebruikers kunnen de waarden van deze variabelen wijzigen. De $MaximumHistoryCount variabele bepaalt bijvoorbeeld het maximum aantal vermeldingen in de sessiegeschiedenis.

    Zie about_Preference_Variables voor meer informatie, een lijst en een beschrijving van de voorkeursvariabelen.

Werken met variabelen

Als u een nieuwe variabele wilt maken, gebruikt u een toewijzingsinstructie om een waarde toe te wijzen aan de variabele. U hoeft de variabele niet te declareren voordat u deze gebruikt. De standaardwaarde van alle variabelen is $null.

Als u een lijst met alle variabelen in uw PowerShell-sessie wilt ophalen, typt u Get-Variable. De namen van de variabelen worden weergegeven zonder het voorgaande dollarteken ($) dat wordt gebruikt om te verwijzen naar variabelen.

Voorbeeld:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Variabelen zijn handig voor het opslaan van de resultaten van opdrachten.

Voorbeeld:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Als u de waarde van een variabele wilt weergeven, typt u de naam van de variabele, voorafgegaan door een dollarteken ($).

Voorbeeld:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

Als u de waarde van een variabele wilt wijzigen, wijst u een nieuwe waarde toe aan de variabele.

In de volgende voorbeelden wordt de waarde van de $MyVariable variabele weergegeven, wordt de waarde van de variabele gewijzigd en wordt vervolgens de nieuwe waarde weergegeven.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

Als u de waarde van een variabele wilt verwijderen, gebruikt u de Clear-Variable cmdlet of wijzigt u de waarde in $null.

Clear-Variable -Name MyVariable
$MyVariable = $null

Als u de variabele wilt verwijderen, gebruikt u Remove-Variable of Remove-Item.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

Het is ook mogelijk om waarden toe te wijzen aan meerdere variabelen met één instructie. In de volgende voorbeelden wordt dezelfde waarde toegewezen aan meerdere variabelen:

$a = $b = $c = 0

In het volgende voorbeeld worden meerdere waarden aan meerdere variabelen toegewezen.

$i,$j,$k = 10, "red", $true    # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true       # $i is 10, $j is [object[]], Length 2

Zie de sectie Meerdere variabelen toewijzen van about_Assignment_Operators voor meer gedetailleerde informatie.

Typen variabelen

U kunt elk type object opslaan in een variabele, inclusief gehele getallen, tekenreeksen, matrices en hash-tabellen. En objecten die processen, services, gebeurtenislogboeken en computers vertegenwoordigen.

PowerShell-variabelen worden losjes getypt, wat betekent dat ze niet beperkt zijn tot een bepaald type object. Eén variabele kan zelfs een verzameling of matrix bevatten van verschillende typen objecten tegelijk.

Het gegevenstype van een variabele wordt bepaald door de .NET-typen van de waarden van de variabele. Gebruik Get-Member om het objecttype van een variabele weer te geven.

Voorbeeld:

$a = 12                         # System.Int32
$a = "Word"                     # System.String
$a = 12, "Word"                 # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows   # FileInfo and DirectoryInfo types

U kunt een typekenmerk en cast-notatie gebruiken om ervoor te zorgen dat een variabele alleen specifieke objecttypen of objecten kan bevatten die naar dat type kunnen worden geconverteerd. Als u een waarde van een ander type probeert toe te wijzen, probeert PowerShell de waarde te converteren naar het type. Als het type niet kan worden geconverteerd, mislukt de toewijzingsinstructie.

Als u cast-notatie wilt gebruiken, voert u een typenaam in, tussen vierkante haken, vóór de naam van de variabele (aan de linkerkant van de toewijzingsinstructie). In het volgende voorbeeld wordt een $number variabele gemaakt die alleen gehele getallen kan bevatten, een $words variabele die alleen tekenreeksen kan bevatten en een $dates variabele die alleen DateTime-objecten kan bevatten.

[int]$number = 8
$number = "12345"  # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string
was not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : MetadataError: (:) [],
    ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2       # The integer is converted to a string.
$words += 10     # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91"  # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10    # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00

Variabelen gebruiken in opdrachten en expressies

Als u een variabele in een opdracht of expressie wilt gebruiken, typt u de naam van de variabele, voorafgegaan door het dollarteken ($).

Als de variabelenaam en het dollarteken niet tussen aanhalingstekens staan of als deze tussen dubbele aanhalingstekens (") staan, wordt de waarde van de variabele gebruikt in de opdracht of expressie.

Als de variabelenaam en het dollarteken tussen enkele aanhalingstekens staan', wordt de naam van de variabele gebruikt in de expressie.

Zie about_Quoting_Rules voor meer informatie over het gebruik van aanhalingstekens in PowerShell.

In dit voorbeeld wordt de waarde van de $PROFILE variabele opgehaald. Dit is het pad naar het PowerShell-gebruikersprofielbestand in de PowerShell-console.

$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

In dit voorbeeld worden twee opdrachten weergegeven waarmee het PowerShell-profiel in notepad.exe kan worden geopend. In het voorbeeld met dubbele aanhalingstekens (") wordt de waarde van de variabele gebruikt.

notepad $PROFILE

notepad "$PROFILE"

In de volgende voorbeelden worden enkele aanhalingstekens (') gebruikt die de variabele behandelen als letterlijke tekst.

'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.

Variabelenamen die speciale tekens bevatten

Variabelenamen beginnen met een dollarteken ($) en kunnen alfanumerieke tekens en speciale tekens bevatten. De lengte van de variabelenaam wordt alleen beperkt door het beschikbare geheugen.

De aanbevolen procedure is dat variabelenamen alleen alfanumerieke tekens en het onderstrepingsteken (_) bevatten. Variabelenamen die spaties en andere speciale tekens bevatten, zijn moeilijk te gebruiken en moeten worden vermeden.

Namen van alfanumerieke variabelen kunnen deze tekens bevatten:

  • Unicode-tekens uit deze categorieën: Lu, Ll, Lt, Lm, Lo of Nd.
  • Onderstrepingsteken (_)
  • Vraagteken (?) teken.

De volgende lijst bevat de Unicode-categoriebeschrijvingen. Zie UnicodeCategory voor meer informatie.

  • Lu - HoofdletterLetter
  • Ll - Kleine letterletter
  • Lt - TitlecaseLetter
  • Lm - ModifierLetter
  • Lo - OtherLetter
  • Nd - DecimalDigitNumber

Als u een variabelenaam wilt maken of weergeven die spaties of speciale tekens bevat, plaatst u de naam van de variabele tussen de accolades ({}) tekens. De accolades leiden PowerShell om de tekens van de variabelenaam te interpreteren als letterlijke tekens.

Namen van speciale tekenvariabelen kunnen deze tekens bevatten:

  • Elk Unicode-teken, met de volgende uitzonderingen:
    • Het afsluitende accolade (}) teken (U+007D).
    • Het teken backtick () (`U+0060). De backtick wordt gebruikt om Unicode-tekens te ontsnappen, zodat ze worden behandeld als letterlijke tekens.

PowerShell heeft gereserveerde variabelen, zoals $$, $?en $^$_ die alfanumerieke en speciale tekens bevatten. Zie about_Automatic_Variables voor meer informatie.

Met de volgende opdracht maakt u bijvoorbeeld de variabele met de naam save-items. De accolades ({}) zijn nodig omdat de naam van de variabele een afbreekstreepje (-) speciaal teken bevat.

${save-items} = "a", "b", "c"
${save-items}
a
b
c

Met de volgende opdracht worden de onderliggende items in de map opgeslagen die worden vertegenwoordigd door de ProgramFiles(x86) omgevingsvariabele.

Get-ChildItem ${env:ProgramFiles(x86)}

Als u wilt verwijzen naar een variabelenaam die accolades bevat, plaatst u de naam van de variabele tussen accolades en gebruikt u het teken backtick om aan de accolades te ontsnappen. Als u bijvoorbeeld een variabele met de naam this{value}is wilt maken:

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

Variabelen en bereik

Variabelen zijn standaard alleen beschikbaar in het bereik waarin ze worden gemaakt.

Een variabele die u in een functie maakt, is bijvoorbeeld alleen beschikbaar binnen de functie. Een variabele die u in een script maakt, is alleen beschikbaar in het script. Als u een punt-bron van het script maakt, wordt de variabele toegevoegd aan het huidige bereik. Zie about_Scopes voor meer informatie.

U kunt een bereikwijziging gebruiken om het standaardbereik van de variabele te wijzigen. Met de volgende expressie wordt een variabele gemaakt met de naam Computers. De variabele heeft een globaal bereik, zelfs wanneer deze wordt gemaakt in een script of functie.

$Global:Computers = "Server01"

Voor een script of opdracht die buiten de sessie wordt uitgevoerd, hebt u de Using bereikaanpassing nodig om variabele waarden uit het aanroepende sessiebereik in te sluiten, zodat deze toegang hebben tot de sessiecode.

Zie about_Remote_Variables voor meer informatie.

Variabelen opslaan

Variabelen die u maakt, zijn alleen beschikbaar in de sessie waarin u ze maakt. Ze gaan verloren wanneer u uw sessie sluit.

Als u de variabele wilt maken in elke PowerShell-sessie die u start, voegt u de variabele toe aan uw PowerShell-profiel.

Als u bijvoorbeeld de waarde van de $VerbosePreference variabele in elke PowerShell-sessie wilt wijzigen, voegt u de volgende opdracht toe aan uw PowerShell-profiel.

$VerbosePreference = "Continue"

U kunt deze opdracht toevoegen aan uw PowerShell-profiel door het $PROFILE bestand te openen in een teksteditor, zoals notepad.exe. Zie about_Profiles voor meer informatie over PowerShell-profielen.

De variabele: station

De PowerShell Variable-provider maakt een Variable: station dat eruitziet en fungeert als een bestandssysteemstation, maar bevat de variabelen in uw sessie en de bijbehorende waarden.

Gebruik de volgende opdracht om over te schakelen naar het Variable: station:

Set-Location Variable:

Als u de items en variabelen in het Variable: station wilt weergeven, gebruikt u de Get-Item of Get-ChildItem cmdlets.

Get-ChildItem Variable:

Als u de waarde van een bepaalde variabele wilt ophalen, gebruikt u de bestandssysteem notatie om de naam van het station en de naam van de variabele op te geven. Als u bijvoorbeeld de automatische variabele wilt ophalen, gebruikt u de $PSCulture volgende opdracht.

Get-Item Variable:\PSCulture
Name                           Value
----                           -----
PSCulture                      en-US

Als u meer informatie wilt weergeven over het Variable: station en de Provider van de PowerShell-variabele, typt u:

Get-Help Variable

Syntaxis van variabelen met providerpaden

U kunt een providerpad vooraf laten gaan met het dollarteken ($) en toegang krijgen tot de inhoud van elke provider die de interface IContentCmdletProvider implementeert.

De volgende ingebouwde PowerShell-providers ondersteunen deze notatie:

De variabele-cmdlets

PowerShell bevat een set cmdlets die zijn ontworpen voor het beheren van variabelen.

Als u de cmdlets wilt weergeven, typt u:

Get-Command -Noun Variable

Als u hulp wilt krijgen voor een specifieke cmdlet, typt u:

Get-Help <cmdlet-name>
Cmdlet-naam Beschrijving
Clear-Variable Hiermee verwijdert u de waarde van een variabele.
Get-Variable Haalt de variabelen op in de huidige console.
New-Variable Hiermee wordt een nieuwe variabele gemaakt.
Remove-Variable Hiermee verwijdert u een variabele en de bijbehorende waarde.
Set-Variable Hiermee wijzigt u de waarde van een variabele.

Zie ook