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.

Variabelenamen zijn niet hoofdlettergevoelig en kunnen spaties en speciale tekens bevatten. Variabelenamen met speciale tekens en spaties zijn echter 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. Met de $PSHOME variabele wordt bijvoorbeeld het pad naar de Installatiemap van PowerShell 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 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.

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 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 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 getypt, 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. Gebruik Get-Member om het objecttype van een variabele weer te geven.

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 castnotatie gebruiken om ervoor te zorgen dat een variabele alleen specifieke objecttypen of objecten kan bevatten die naar dat type kunnen worden geconverteerd. Als u probeert een waarde van een ander type toe te wijzen, probeert PowerShell de waarde te converteren naar het type. Als het type niet kan worden geconverteerd, mislukt de toewijzingsinstructie.

Als u castnotatie wilt gebruiken, voert u een typenaam in, tussen vierkante haken, vóór de naam van de variabele (links 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 deze 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 in notepad.exekan 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.

Namen van variabelen 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 met spaties en andere speciale tekens 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 (_) teken.
  • 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 als letterlijke tekens te interpreteren.

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 wordt bijvoorbeeld de variabele met de naam save-itemsgemaakt. De accolades ({}) zijn nodig omdat de 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 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 backtickteken 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

Standaard zijn variabelen alleen beschikbaar in het bereik waarin ze worden 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 puntbron 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 maakt u een variabele met de naam Computers. De variabele heeft een globaal bereik, zelfs wanneer deze wordt 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 in te sluiten vanuit het bereik van de aanroepende sessie, zodat de sessiecode er toegang toe heeft.

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 naar het Variable: station te gaan:

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 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 Variable-provider, typt u:

Get-Help Variable

Variabele syntaxis 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 cmdlets voor variabelen

PowerShell bevat een set cmdlets die zijn ontworpen om variabelen te beheren.

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 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