Delen via


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 geheugeneenheid 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. Namen van variabelen die speciale tekens en spaties bevatten, zijn echter moeilijk te gebruiken en moeten worden vermeden. Zie Namen van variabelen die speciale tekens bevatten voor meer informatie.

PowerShell bevat verschillende typen variabelen.

  • Door de gebruiker gemaakte variabelen: door de gebruiker gemaakte variabelen worden gemaakt en onderhouden door de gebruiker. Standaard bestaan de variabelen die u maakt op de PowerShell-opdrachtregel alleen wanneer het PowerShell-venster is geopend. Wanneer de PowerShell-vensters worden 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 een 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 hun waarden naar behoefte om hun nauwkeurigheid te behouden. Gebruikers kunnen de waarde van deze variabelen niet wijzigen. Met de $PSHOME variabele wordt bijvoorbeeld het pad naar de PowerShell-installatiemap opgeslagen.

    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 variabele bepaalt bijvoorbeeld $MaximumHistoryCount 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 kunt gebruiken. De standaardwaarde van alle variabelen is $null.

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

Bijvoorbeeld:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

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

Bijvoorbeeld:

$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 ($).

Bijvoorbeeld:

$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 aan meerdere variabelen toe te wijzen 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 toegewezen aan meerdere variabelen.

$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 getypeerd, wat betekent dat ze niet beperkt zijn tot een bepaald type object. Eén variabele kan zelfs een verzameling of matrix van verschillende typen objecten tegelijk bevatten.

Het gegevenstype van een variabele wordt bepaald door de .NET-typen van de waarden van de variabele. Als u het objecttype van een variabele wilt weergeven, gebruikt u Get-Member.

Bijvoorbeeld:

$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 een 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 bijbehorende type. Als het type niet kan worden geconverteerd, mislukt de toewijzingsinstructie.

Als u de cast-notatie wilt gebruiken, voert u een typenaam tussen vierkante haken in 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 naam van de variabele en het dollarteken niet tussen aanhalingstekens staan of als ze tussen dubbele aanhalingstekens (") staan, wordt de waarde van de variabele gebruikt in de opdracht of expressie.

Als de naam van de variabele 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 kan worden geopend in notepad.exe. 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 als letterlijke tekst behandelen.

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

Namen van variabelen die speciale tekens bevatten

Namen van variabelen 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 namen van variabelen alleen alfanumerieke tekens en het onderstrepingsteken (_) bevatten. Namen van variabelen die spaties en andere speciale tekens bevatten, zijn moeilijk te gebruiken en moeten worden vermeden.

Namen van alfanumerieke variabelen kunnen de volgende tekens bevatten:

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

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

  • Lu - Hoofdletter
  • Ll - Kleine letters
  • Lt - TitelcaseLetter
  • 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 ({}). De accolades leiden PowerShell om de tekens van de variabelenaam te interpreteren als letterlijke waarden.

Namen van speciale tekenvariabelen kunnen deze tekens bevatten:

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

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 variabelenaam 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 wordt vertegenwoordigd door de ProgramFiles(x86) omgevingsvariabele.

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

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

${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 zijn gemaakt.

Een variabele die u in een functie maakt, is bijvoorbeeld alleen beschikbaar in de functie. Een variabele die u in een script maakt, is alleen beschikbaar in het script. Als u het script dot-source, 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 maakt u een variabele met de naam Computers. De variabele heeft een globaal bereik, zelfs wanneer deze is gemaakt in een script of functie.

$Global:Computers = "Server01"

Voor elk script of elke 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 buiten sessiecode toegankelijk zijn.

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-variabeleprovider maakt een Variable: station dat eruitziet en fungeert als een bestandssysteemstation, maar bevat de variabelen in uw sessie en hun waarden.

Als u wilt overschakelen naar het Variable: station, gebruikt u de volgende opdracht:

Set-Location Variable:

Gebruik Get-Item de cmdlets of Get-ChildItem om de items en variabelen in het Variable: station weer te geven.

Get-ChildItem Variable:

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

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

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

Get-Help Variable

Variabelesyntaxis met providerpaden

U kunt een providerpad vooraf laten gaan door 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

Voor hulp bij een specifieke cmdlet typt u:

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

Zie ook