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. Lagra till exempel 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 , eller $a $process $my_var .

Variabelnamn är inte fallkä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 medan 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 noggrannheten. Användare kan inte ändra värdet för dessa variabler. Variabeln lagrar $PSHOME 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 i med standardvärden. Användare kan ändra värdena för dessa variabler. Variabeln avgör $MaximumHistoryCount 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.

Exempel:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Variabler är användbara för att lagra resultatet av kommandon.

Exempel:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Om du vill visa värdet för en variabel skriver du variabelnamnet före ett dollartecken ( $ ).

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.

I följande exempel visas värdet för $MyVariable variabeln, värdet för variabeln ändras och det nya värdet visas.

$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 Clear-Variable cmdleten 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 är också möjligt 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 är löst typade, 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 på samma gång.

Datatypen för en variabel bestäms av .NET-typerna för variabelvärdena. Om du vill visa en variabels objekttyp använder du Get-Member.

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 typ av typ-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 typ notation anger du ett typnamn inom hakparenteser före variabelnamnet (till vänster om tilldelningssatsen). I följande exempel skapas en variabel som endast kan innehålla heltal, en variabel som endast kan innehålla strängar och en variabel som endast kan $number $words innehålla $dates 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 före 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 $PROFILE variabeln, 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 dubbla citattecken ( " ) används variabelns värde.

notepad $PROFILE

notepad "$PROFILE"

I följande exempel används enkla citattecken ( ' ) som behandlar variabeln som literal text.

'$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 sättet är att variabelnamn endast innehåller alfanumeriska tecken och understreck ( _ ) tecken. 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 kategoribeskrivningarna för Unicode. Mer information finns i UnicodeCategory.

  • Lu – UppercaseLetter
  • Ll – LowercaseLetter
  • Lt – TitlecaseLetter
  • Lm – ModifierLetter
  • Lo – OtherLetter
  • Nd – DecimalDigitNumber

Om du vill skapa eller visa ett variabelnamn som innehåller blanksteg eller specialtecken omsluter du variabelnamnet med kparenteserna ( {} ) tecken. Kparenteserna dirigerar PowerShell att tolka variabelnamnets tecken som literaler.

Specialteckenvariabelnamn kan innehålla följande tecken:

  • Alla Unicode-tecken, med följande undantag:
    • Avslutande kparentes ( } ) (U+007D).
    • Bakåtklickstecknet ( ` ) (U+0060). Backticken används för att escape-escape-tecken så att de behandlas som literaler.

PowerShell har reserverade variabler som $$ , , och som innehåller $? $^ $_ alfanumeriska tecken och specialtecken. Mer information finns i about_Automatic_Variables.

Följande kommando skapar till exempel variabeln med namnet save-items . Kparenteserna ( {} ) 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 kparenteser omsluter du variabelnamnet inom kparenteser och använder bakåtklickstecknet för att undvika kparenteserna. Om du till exempel vill skapa en variabel med namnet this{value}is type:

${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 det omfång 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 bara tillgänglig i skriptet. Om du använder dot-source för 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 standardomfånget för variabeln. 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 skript eller kommandon som körs utanför sessionen behöver du omfångsmodifieraren för att bädda in variabelvärden från det anropande sessionsomfånget, så att utanför Using sessionskoden kan komma åt dem.

Mer information finns i about_Remote_Variables.

Spara variabler

Variabler som du skapar är bara tillgängliga i den session där du skapar dem. De försvinner 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 $VerbosePreference variabeln 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 din PowerShell-profil genom att öppna filen i $PROFILE en textredigerare, till exempel notepad.exe. Mer information om PowerShell-profiler finns i about_Profiles.

Variabel:-enheten

PowerShell-variabelprovidern skapar en enhet som ser ut och fungerar som en filsystemenhet, men den innehåller variablerna Variable: i din session och deras värden.

Om du vill ändra Variable: till enheten använder du följande kommando:

Set-Location Variable:

Om du vill visa en lista med objekt och variabler Variable: på enheten använder du Get-Item Get-ChildItem cmdletarna eller .

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 $PSCulture den 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

Variabel syntax med providersökvägar

Du kan lägga till prefixet för en providersökväg med dollartecknet ( ) och komma åt innehållet i alla leverantörer som implementerar $ gränssnittet IContentCmdletProvider.

Följande inbyggda PowerShell-providers har stöd för den här notationen:

Variabel-cmdletarna

PowerShell innehåller en uppsättning cmdlets som är utformade för att hantera variabler.

Om du vill visa en lista över cmdletarna skriver du:

Get-Command -Noun Variable

Om du vill få hjälp med en specifik cmdlet skriver du:

Get-Help <cmdlet-name>
Cmdlet-namn Description
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.

Se även

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes

about_Remote_Variables