about_Variables
Kort beskrivning
Beskriver hur variabler lagrar värden som kan användas i PowerShell.
Lång beskrivning
Du kan lagra alla typer av värden i PowerShell-variabler. Du kan till exempel lagra resultatet av kommandon och lagra element som används i kommandon och uttryck, till exempel namn, sökvägar, inställningar och värden.
En variabel är en minnesenhet där värden lagras. I PowerShell representeras variabler av textsträngar som börjar med ett dollartecken ($
), till exempel $a
, $process
eller $my_var
.
Variabelnamn är inte skiftlägeskänsliga och kan innehålla blanksteg och specialtecken. Men variabelnamn som innehåller specialtecken och blanksteg är svåra att använda och bör undvikas. Mer information finns i Variabelnamn som innehåller specialtecken.
Det finns flera olika typer av variabler i PowerShell.
Användarskapade variabler: Användarskapade variabler skapas och underhålls av användaren. Som standard finns de variabler som du skapar på PowerShell-kommandoraden bara när PowerShell-fönstret är öppet. När PowerShell-fönstren stängs tas variablerna bort. Om du vill spara en variabel lägger du till den i din PowerShell-profil. Du kan också skapa variabler i skript med globalt, skript eller lokalt omfång.
Automatiska variabler: Automatiska variabler lagrar tillståndet för PowerShell. Dessa variabler skapas av PowerShell och PowerShell ändrar sina värden efter behov för att upprätthålla deras noggrannhet. Användare kan inte ändra värdet för dessa variabler. Variabeln
$PSHOME
lagrar till exempel sökvägen till PowerShell-installationskatalogen.Mer information, en lista och en beskrivning av de automatiska variablerna finns i about_Automatic_Variables.
Inställningsvariabler: Inställningsvariabler lagrar användarinställningar för PowerShell. Dessa variabler skapas av PowerShell och fylls med standardvärden. Användare kan ändra värdena för dessa variabler. Variabeln
$MaximumHistoryCount
avgör till exempel det maximala antalet poster i sessionshistoriken.Mer information, en lista och en beskrivning av inställningsvariablerna finns i about_Preference_Variables.
Arbeta med variabler
Om du vill skapa en ny variabel använder du en tilldelningssats för att tilldela variabeln ett värde. Du behöver inte deklarera variabeln innan du använder den. Standardvärdet för alla variabler är $null
.
Om du vill hämta en lista över alla variabler i PowerShell-sessionen skriver du Get-Variable
. Variabelnamnen visas utan det föregående dollartecknet ($
) som används för att referera till variabler.
Till exempel:
$MyVariable = 1, 2, 3
$Path = "C:\Windows\System32"
Variabler är användbara för att lagra resultatet av kommandon.
Till exempel:
$Processes = Get-Process
$Today = (Get-Date).DateTime
Om du vill visa värdet för en variabel skriver du variabelnamnet föregås av ett dollartecken ($
).
Till exempel:
$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46
Om du vill ändra värdet för en variabel tilldelar du variabeln ett nytt värde.
Följande exempel visar värdet för variabeln $MyVariable
, ändrar värdet för variabeln och visar sedan det nya värdet.
$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.
Om du vill ta bort värdet för en variabel använder du cmdleten Clear-Variable
eller ändrar värdet till $null
.
Clear-Variable -Name MyVariable
$MyVariable = $null
Om du vill ta bort variabeln använder du Remove-Variable eller Remove-Item.
Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable
Det går också att tilldela värden till flera variabler med en instruktion. I följande exempel tilldelas samma värde till flera variabler:
$a = $b = $c = 0
I nästa exempel tilldelas flera värden till flera variabler.
$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
Mer detaljerad information finns i avsnittet Tilldela flera variabler i about_Assignment_Operators.
Typer av variabler
Du kan lagra alla typer av objekt i en variabel, inklusive heltal, strängar, matriser och hash-tabeller. Och objekt som representerar processer, tjänster, händelseloggar och datorer.
PowerShell-variabler skrivs löst, vilket innebär att de inte är begränsade till en viss typ av objekt. En enskild variabel kan till och med innehålla en samling, eller matris, av olika typer av objekt samtidigt.
Datatypen för en variabel bestäms av .NET-typerna för variabelns värden. Om du vill visa en variabels objekttyp använder du Get-Member.
Till exempel:
$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
Du kan använda ett typattribut och en gjuten notation för att säkerställa att en variabel endast kan innehålla specifika objekttyper eller objekt som kan konverteras till den typen. Om du försöker tilldela ett värde av en annan typ försöker PowerShell konvertera värdet till dess typ. Om typen inte kan konverteras misslyckas tilldelningssatsen.
Om du vill använda gjuten notation anger du ett typnamn inom hakparenteser före variabelnamnet (till vänster i tilldelningsinstruktionen). I följande exempel skapas en $number
variabel som bara kan innehålla heltal, en $words
variabel som bara kan innehålla strängar och en $dates
variabel som bara kan innehålla DateTime-objekt .
[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
Använda variabler i kommandon och uttryck
Om du vill använda en variabel i ett kommando eller uttryck skriver du variabelnamnet, som föregås av dollartecknet ($
).
Om variabelnamnet och dollartecknet inte omges av citattecken eller om de omges av dubbla citattecken ("
) används värdet för variabeln i kommandot eller uttrycket.
Om variabelnamnet och dollartecknet omges av enkla citattecken ('
) används variabelnamnet i uttrycket.
Mer information om hur du använder citattecken i PowerShell finns i about_Quoting_Rules.
Det här exemplet hämtar värdet för variabeln $PROFILE
, som är sökvägen till PowerShell-användarprofilfilen i PowerShell-konsolen.
$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
I det här exemplet visas två kommandon som kan öppna PowerShell-profilen i notepad.exe. I exemplet med dubbel citattecken ("
) används variabelns värde.
notepad $PROFILE
notepad "$PROFILE"
I följande exempel används enkla citattecken ('
) som behandlar variabeln som literaltext.
'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.
Variabelnamn som innehåller specialtecken
Variabelnamn börjar med ett dollartecken ($
) och kan innehålla alfanumeriska tecken och specialtecken. Variabelnamnets längd begränsas endast av tillgängligt minne.
Det bästa är att variabelnamn endast innehåller alfanumeriska tecken och understreck (_
). Variabelnamn som innehåller blanksteg och andra specialtecken är svåra att använda och bör undvikas.
Alfanumeriska variabelnamn kan innehålla följande tecken:
- Unicode-tecken från dessa kategorier: Lu, Ll, Lt, Lm, Lo eller Nd.
- Understreck (
_
) tecken. - Frågetecken (
?
) tecken.
Följande lista innehåller Kategoribeskrivningar för Unicode. Mer information finns i UnicodeCategory.
- Lu – VersalerLetter
- Ll – LowercaseLetter
- Lt – TitlecaseLetter
- Lm – ModifierLetter
- Lo - OtherLetter
- Nd – DecimalDigitNumber
Om du vill skapa eller visa ett variabelnamn som innehåller blanksteg eller specialtecken omger du variabelnamnet med klammerparenteser ({}
) tecken.
Klammerparenteserna dirigerar PowerShell till att tolka variabelnamnets tecken som literaler.
Specialteckenvariabelnamn kan innehålla följande tecken:
- Alla Unicode-tecken med följande undantag:
- Det avslutande klammerparentestecknet (
}
) (U+007D). - Backtick-tecknet (
`
) (U+0060). Backticken används för att undkomma Unicode-tecken så att de behandlas som literaler.
- Det avslutande klammerparentestecknet (
PowerShell har reserverade variabler som $$
, $?
, $^
och $_
som innehåller alfanumeriska och specialtecken. Mer information finns i about_Automatic_Variables.
Följande kommando skapar till exempel variabeln med namnet save-items
. Klammerparenteserna ({}
) behövs eftersom variabelnamnet innehåller ett bindestreck (-
) specialtecken.
${save-items} = "a", "b", "c"
${save-items}
a
b
c
Följande kommando hämtar de underordnade objekten i katalogen som representeras av ProgramFiles(x86)
miljövariabeln.
Get-ChildItem ${env:ProgramFiles(x86)}
Om du vill referera till ett variabelnamn som innehåller klammerparenteser omger du variabelnamnet i klammerparenteser och använder backtick-tecknet för att undvika klammerparenteserna. Om du till exempel vill skapa en variabel med namnet this{value}is
typ:
${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.
Variabler och omfång
Som standard är variabler endast tillgängliga i omfånget där de skapas.
Till exempel är en variabel som du skapar i en funktion endast tillgänglig i funktionen. En variabel som du skapar i ett skript är endast tillgänglig i skriptet. Om du dot-source skriptet läggs variabeln till i det aktuella omfånget. Mer information finns i about_Scopes.
Du kan använda en omfångsmodifierare för att ändra variabelns standardomfång. Följande uttryck skapar en variabel med namnet Computers
. Variabeln har ett globalt omfång, även när den skapas i ett skript eller en funktion.
$Global:Computers = "Server01"
För alla skript eller kommandon som körs utanför sessionen behöver du omfångsmodifieraren Using
för att bädda in variabelvärden från det anropande sessionsomfånget, så att kod utanför sessionen kan komma åt dem.
Mer information finns i about_Remote_Variables.
Spara variabler
Variabler som du skapar är endast tillgängliga i sessionen där du skapar dem. De går förlorade när du stänger sessionen.
Om du vill skapa variabeln i varje PowerShell-session som du startar lägger du till variabeln i din PowerShell-profil.
Om du till exempel vill ändra värdet för variabeln $VerbosePreference
i varje PowerShell-session lägger du till följande kommando i din PowerShell-profil.
$VerbosePreference = "Continue"
Du kan lägga till det här kommandot i PowerShell-profilen genom att öppna $PROFILE
filen i en textredigerare, till exempel notepad.exe. Mer information om PowerShell-profiler finns i about_Profiles.
Variabeln: enhet
PowerShell-variabelprovidern skapar en Variable:
enhet som ser ut och fungerar som en filsystemenhet, men som innehåller variablerna i sessionen och deras värden.
Om du vill ändra till Variable:
enheten använder du följande kommando:
Set-Location Variable:
Om du vill visa en lista över objekt och variabler på Variable:
enheten använder du Get-Item
cmdletarna eller Get-ChildItem
.
Get-ChildItem Variable:
Om du vill hämta värdet för en viss variabel använder du filsystems notation för att ange namnet på enheten och namnet på variabeln. Om du till exempel vill hämta den $PSCulture
automatiska variabeln använder du följande kommando.
Get-Item Variable:\PSCulture
Name Value
---- -----
PSCulture en-US
Om du vill visa mer information om Variable:
enheten och PowerShell-variabelprovidern skriver du:
Get-Help Variable
Variabelsyntax med providersökvägar
Du kan prefixa en providersökväg med dollartecknet ($
) och komma åt innehållet i alla leverantörer som implementerar gränssnittet IContentCmdletProvider .
Följande inbyggda PowerShell-leverantörer stöder den här notationen:
Variabel-cmdletar
PowerShell innehåller en uppsättning cmdletar som är utformade för att hantera variabler.
Om du vill visa en lista över cmdletar skriver du:
Get-Command -Noun Variable
Om du vill få hjälp med en specifik cmdlet skriver du:
Get-Help <cmdlet-name>
Cmdlet-namn | beskrivning |
---|---|
Clear-Variable |
Tar bort värdet för en variabel. |
Get-Variable |
Hämtar variablerna i den aktuella konsolen. |
New-Variable |
Skapar en ny variabel. |
Remove-Variable |
Tar bort en variabel och dess värde. |
Set-Variable |
Ändrar värdet för en variabel. |