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
, $process
of $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 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. De variabelen die u op de PowerShell-opdrachtregel maakt, bestaan standaard 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: automatische variabelen slaan de status van PowerShell op. 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 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 u Get-Variable
. 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 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 hashtabellen. 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. 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 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 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 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 mag bevatten, een $words
variabele die alleen tekenreeksen kan bevatten en een $dates
variabele die alleen DateTime-objecten mag 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 wilt gebruiken in een opdracht of expressie, 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 tussen dubbele aanhalingstekens ("
), 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 behandelen als letterlijke tekst.
'$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 - Hoofdletterletter
- Ll - Kleine letters
- 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 ({}
).
De accolades leiden PowerShell om de tekens van de naam van de variabele te interpreteren als letterlijke tekens.
Namen van speciale tekenvariabelen kunnen de volgende 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 laten ontsnappen, zodat ze worden behandeld als letterlijke tekens.
- De accolade sluiten (
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 speciaal afbreekstreepje (-
) bevat.
${save-items} = "a", "b", "c"
${save-items}
a
b
c
Met de volgende opdracht worden de onderliggende items in de map die wordt 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 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. |