Om variablerAbout Variables

Kort beskrivningShort description

Beskriver hur variabler lagrar värden som kan användas i PowerShell.Describes how variables store values that can be used in PowerShell.

Lång beskrivningLong description

Du kan lagra alla typer av värden i PowerShell-variabler.You can store all types of values in PowerShell variables. 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.For example, store the results of commands, and store elements that are used in commands and expressions, such as names, paths, settings, and values.

En variabel är en enhet i minnet där värden lagras.A variable is a unit of memory in which values are stored. I PowerShell representeras variabler av text strängar som börjar med ett dollar tecken ( $ ), till exempel,, $a $process eller $my_var .In PowerShell, variables are represented by text strings that begin with a dollar sign ($), such as $a, $process, or $my_var.

Variabel namn är inte Skift läges känsliga och kan innehålla blank steg och specialtecken.Variable names aren't case-sensitive, and can include spaces and special characters. Men variabel namn som innehåller specialtecken och blank steg är svåra att använda och bör undvikas.But, variable names that include special characters and spaces are difficult to use and should be avoided. Mer information finns i variabel namn som innehåller specialtecken.For more information, see Variable names that include special characters.

Det finns flera olika typer av variabler i PowerShell.There are several different types of variables in PowerShell.

  • Användardefinierade variabler: variabler som skapats av användaren skapas och underhålls av användaren.User-created variables: User-created variables are created and maintained by the user. Som standard finns variabler som du skapar på PowerShell-kommandoraden bara när PowerShell-fönstret är öppet.By default, the variables that you create at the PowerShell command line exist only while the PowerShell window is open. När PowerShell-fönstren stängs tas variablerna bort.When the PowerShell windows is closed, the variables are deleted. Om du vill spara en variabel lägger du till den i din PowerShell-profil.To save a variable, add it to your PowerShell profile. Du kan också skapa variabler i skript med globalt skript eller lokalt definitions område.You can also create variables in scripts with global, script, or local scope.

  • Automatiska variabler: automatiska variabler lagrar status för PowerShell.Automatic variables: Automatic variables store the state of PowerShell. De här variablerna skapas av PowerShell, och PowerShell ändrar värdena efter behov för att upprätthålla deras noggrannhet.These variables are created by PowerShell, and PowerShell changes their values as required to maintain their accuracy. Användare kan inte ändra värdet för dessa variabler.Users can't change the value of these variables. $PSHOMEVariabeln lagrar till exempel sökvägen till installations katalogen för PowerShell.For example, the $PSHOME variable stores the path to the PowerShell installation directory.

    Mer information, en lista och en beskrivning av de automatiska variablerna finns about_Automatic_Variables.For more information, a list, and a description of the automatic variables, see about_Automatic_Variables.

  • Inställningar variabler: Preferences-variabler lagrar användar inställningar för PowerShell.Preference variables: Preference variables store user preferences for PowerShell. Dessa variabler skapas av PowerShell och fylls i med standardvärden.These variables are created by PowerShell and are populated with default values. Användare kan ändra värdena för variablerna.Users can change the values of these variables. Variabeln kan till exempel $MaximumHistoryCount bestämma det maximala antalet poster i tidigare sessioner.For example, the $MaximumHistoryCount variable determines the maximum number of entries in the session history.

    Mer information, en lista och en beskrivning av Preferences-variablerna finns about_Preference_Variables.For more information, a list, and a description of the preference variables, see about_Preference_Variables.

Arbeta med variablerWorking with variables

Om du vill skapa en ny variabel använder du ett tilldelnings uttryck för att tilldela variabeln ett värde.To create a new variable, use an assignment statement to assign a value to the variable. Du behöver inte deklarera variabeln innan du använder den.You don't have to declare the variable before using it. Standardvärdet för alla variabler är $null .The default value of all variables is $null.

Om du vill hämta en lista över alla variabler i PowerShell-sessionen skriver du Get-Variable .To get a list of all the variables in your PowerShell session, type Get-Variable. Variabel namnen visas utan föregående dollar $ tecken () som används för att referera till variabler.The variable names are displayed without the preceding dollar ($) sign that is used to reference variables.

Exempel:For example:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Variabler är användbara för att lagra resultatet av kommandon.Variables are useful for storing the results of commands.

Exempel:For example:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Om du vill visa värdet för en variabel skriver du variabelns namn, föregånget av ett dollar tecken ( $ ).To display the value of a variable, type the variable name, preceded by a dollar sign ($).

Exempel:For example:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

Om du vill ändra värdet för en variabel tilldelar du ett nytt värde till variabeln.To change the value of a variable, assign a new value to the variable.

Följande exempel visar värdet för $MyVariable variabeln, ändrar värdet för variabeln och visar sedan det nya värdet.The following examples display the value of the $MyVariable variable, changes the value of the variable, and then displays the new value.

$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 .To delete the value of a variable, use the Clear-Variable cmdlet or change the value to $null.

Clear-Variable -Name MyVariable
$MyVariable = $null

Ta bort variabeln genom att använda Remove-Variable eller Remove-item.To delete the variable, use Remove-Variable or Remove-Item.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

Typer av variablerTypes of variables

Du kan lagra alla typer av objekt i en variabel, inklusive heltal, strängar, matriser och hash-tabeller.You can store any type of object in a variable, including integers, strings, arrays, and hash tables. Och objekt som representerar processer, tjänster, händelse loggar och datorer.And, objects that represent processes, services, event logs, and computers.

PowerShell-variabler skrivs fritt, vilket innebär att de inte är begränsade till en viss typ av objekt.PowerShell variables are loosely typed, which means that they aren't limited to a particular type of object. En enskild variabel kan till och med innehålla en samling, eller matris, av olika typer av objekt på samma gång.A single variable can even contain a collection, or array, of different types of objects at the same time.

Data typen för en variabel fastställs av .NET-typerna för variabelns värden.The data type of a variable is determined by the .NET types of the values of the variable. Om du vill visa en variabels objekt typ använder du Get-Member.To view a variable's object type, use Get-Member.

Exempel:For example:

$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 Type-attribut och Cast notation för att säkerställa att en variabel endast kan innehålla vissa objekt typer eller objekt som kan konverteras till den typen.You can use a type attribute and cast notation to ensure that a variable can contain only specific object types or objects that can be converted to that type. Om du försöker tilldela ett värde av en annan typ försöker PowerShell konvertera värdet till dess typ.If you try to assign a value of another type, PowerShell tries to convert the value to its type. Om typen inte kan konverteras Miss lyckas tilldelnings instruktionen.If the type can't be converted, the assignment statement fails.

Om du vill använda Cast notation anger du ett typnamn som omges av hakparenteser, före variabel namnet (till vänster i tilldelnings instruktionen).To use cast notation, enter a type name, enclosed in brackets, before the variable name (on the left side of the assignment statement). 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 endast kan innehålla datetime -objekt.The following example creates a $number variable that can contain only integers, a $words variable that can contain only strings, and a $dates variable that can contain only DateTime objects.

[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 uttryckUsing variables in commands and expressions

Om du vill använda en variabel i ett kommando eller uttryck skriver du variabelns namn, föregånget av dollar $ tecknet ().To use a variable in a command or expression, type the variable name, preceded by the dollar ($) sign.

Om variabel namn och dollar tecken inte omges av citat tecken, eller om de omges av dubbla citat tecken ( " ), används värdet för variabeln i kommandot eller uttrycket.If the variable name and dollar sign aren't enclosed in quotation marks, or if they're enclosed in double quotation (") marks, the value of the variable is used in the command or expression.

Om variabel namn och dollar tecken omges av enkla citat ' tecken () används variabel namnet i uttrycket.If the variable name and dollar sign are enclosed in single quotation (') marks, the variable name is used in the expression.

Mer information om hur du använder citat tecken i PowerShell finns about_Quoting_Rules.For more information about using quotation marks in PowerShell, see about_Quoting_Rules.

Det här exemplet hämtar värdet för $PROFILE variabeln, som är sökvägen till PowerShell-filen för användar profiler i PowerShell-konsolen.This example gets the value of the $PROFILE variable, which is the path to the PowerShell user profile file in the PowerShell console.

$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.In this example, two commands are shown that can open the PowerShell profile in notepad.exe. Exemplet med dubbla citat " tecken () använder variabelns värde.The example with double-quote (") marks uses the variable's value.

notepad $PROFILE

notepad "$PROFILE"

I följande exempel används ett enkelt citat ' tecken () som behandlar variabeln som en literal text.The following examples use single-quote (') marks that treat the variable as literal text.

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

Variabel namn som innehåller specialteckenVariable names that include special characters

Variabel namn börjar med ett dollar tecken ( $ ) och får innehålla alfanumeriska tecken och specialtecken.Variable names begin with a dollar ($) sign and can include alphanumeric characters and special characters. Variabel namnets längd begränsas bara av tillgängligt minne.The variable name length is limited only by available memory.

Det bästa tillvägagångs sättet är att variabel namn bara innehåller alfanumeriska tecken och under streck ( _ )-tecknet.The best practice is that variable names include only alphanumeric characters and the underscore (_) character. Variabel namn som innehåller blank steg och andra specialtecken är svåra att använda och bör undvikas.Variable names that include spaces and other special characters, are difficult to use and should be avoided.

Alfanumeriska variabel namn kan innehålla följande tecken:Alphanumeric variable names can contain these characters:

  • Unicode-tecken från dessa kategorier: Lu , lla , lt , LM , Lo eller nd.Unicode characters from these categories: Lu , Ll , Lt , Lm , Lo , or Nd.
  • Under streck ( _ )-tecken.Underscore (_) character.
  • Frågetecken ( ? )-tecken.Question mark (?) character.

I följande lista finns beskrivningar av Unicode-kategorier.The following list contains the Unicode category descriptions. Mer information finns i UnicodeCategory.For more information, see UnicodeCategory.

  • Lu -UppercaseLetterLu - UppercaseLetter
  • Lla – LowercaseLetterLl - LowercaseLetter
  • Lt -TitlecaseLetterLt - TitlecaseLetter
  • LM -ModifierLetterLm - ModifierLetter
  • Lo -OtherLetterLo - OtherLetter
  • Nd – DecimalDigitNumberNd - DecimalDigitNumber

Om du vill skapa eller visa ett variabel namn som innehåller blank steg eller specialtecken, omger du variabel namnet med klammerparenteser ( {} )-tecknen.To create or display a variable name that includes spaces or special characters, enclose the variable name with the curly braces ({}) characters. Klammerparenteserna Direct PowerShell för att tolka variabel namnets tecken som litteraler.The curly braces direct PowerShell to interpret the variable name's characters as literals.

Variabel namn för specialtecken kan innehålla följande tecken:Special character variable names can contain these characters:

  • Valfritt Unicode-tecken, med följande undantag:Any Unicode character, with the following exceptions:
    • Avslutande klammer ( } )-tecken (U + 007D).The closing curly brace (}) character (U+007D).
    • "Bakticket"-( ` )-symbolen (U + 0060).The backtick (`) character (U+0060). Bakticket används för att undanta Unicode-tecken så att de behandlas som litteraler.The backtick is used to escape Unicode characters so they're treated as literals.

PowerShell har reserverade variabler som $$ ,, $? $^ och $_ som innehåller alfanumeriska tecken och specialtecken.PowerShell has reserved variables such as $$, $?, $^, and $_ that contain alphanumeric and special characters. Mer information finns i about_Automatic_Variables.For more information, see about_Automatic_Variables.

Till exempel skapar följande kommando variabeln med namnet save-items .For example, the following command creates the variable named save-items. Klammerparenteser ( {} ) behövs eftersom variabel namnet innehåller ett bindestreck ( - )-specialtecken.The curly braces ({}) are needed because variable name includes a hyphen (-) special character.

${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.The following command gets the child items in the directory that is represented by the ProgramFiles(x86) environment variable.

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

Om du vill referera till ett variabel namn som innehåller klammerparenteser, omger du variabel namnet inom klammerparenteser och använder Baknings tecknet för att undanta klammerparenteserna.To reference a variable name that includes braces, enclose the variable name in braces, and use the backtick character to escape the braces. Om du till exempel vill skapa en variabel med namnet this{value}is Typ:For example, to create a variable named 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ångVariables and scope

Som standard är variabler bara tillgängliga i den omfattning som de har skapats i.By default, variables are only available in the scope in which they're created.

En variabel som du skapar i en funktion är till exempel bara tillgänglig i funktionen.For example, a variable that you create in a function is available only within the function. En variabel som du skapar i ett skript är bara tillgänglig i skriptet.A variable that you create in a script is available only within the script. Om du använder skriptet i punkt-källa läggs variabeln till i det aktuella omfånget.If you dot-source the script, the variable is added to the current scope. Mer information finns i about_Scopes.For more information, see about_Scopes.

Du kan använda en omfattnings modifierare för att ändra standard omfånget för variabeln.You can use a scope modifier to change the default scope of the variable. Följande uttryck skapar en variabel med namnet Computers .The following expression creates a variable named Computers. Variabeln har en global omfattning, även när den skapas i ett skript eller en funktion.The variable has a global scope, even when it's created in a script or function.

$Global:Computers = "Server01"

För alla skript eller kommandon som körs utanför sessionen behöver du Using omfångs modifieraren för att bädda in variabel värden från scopet för den anropande sessionen, så att det går att komma åt dem.For any script or command that executes out of session, you need the Using scope modifier to embed variable values from the calling session scope, so that out of session code can access them.

Mer information finns i about_Remote_Variables.For more information, see about_Remote_Variables.

Sparar variablerSaving variables

Variabler som du skapar är bara tillgängliga i den session där du skapar dem.Variables that you create are available only in the session in which you create them. De går förlorade när du stänger sessionen.They're lost when you close your session.

Om du vill skapa variabeln i varje PowerShell-session som du startar lägger du till variabeln i din PowerShell-profil.To create the variable in every PowerShell session that you start, add the variable to your PowerShell profile.

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.For example, to change the value of the $VerbosePreference variable in every PowerShell session, add the following command to your PowerShell profile.

$VerbosePreference = "Continue"

Du kan lägga till det här kommandot i din PowerShell-profil genom att öppna $PROFILE filen i en text redigerare, t. ex. notepad.exe.You can add this command to your PowerShell profile by opening the $PROFILE file in a text editor, such as notepad.exe. Mer information om PowerShell-profiler finns about_Profiles.For more information about PowerShell profiles, see about_Profiles.

Variabeln: enhetThe Variable: drive

PowerShell-variabeln Provider skapar en Variable: enhet som ser ut och fungerar som en fil systemen het, men den innehåller variablerna i sessionen och deras värden.The PowerShell Variable provider creates a Variable: drive that looks and acts like a file system drive, but it contains the variables in your session and their values.

Om du vill ändra till Variable: enheten använder du följande kommando:To change to the Variable: drive, use the following command:

Set-Location Variable:

Om du vill visa en lista över objekten och variablerna i Variable: enheten använder du Get-Item Get-ChildItem cmdletarna eller.To list the items and variables in the Variable: drive, use the Get-Item or Get-ChildItem cmdlets.

Get-ChildItem Variable:

Om du vill hämta värdet för en viss variabel använder du fil system notation för att ange namnet på enheten och namnet på variabeln.To get the value of a particular variable, use file system notation to specify the name of the drive and the name of the variable. Använd till exempel följande kommando för att hämta den $PSCulture automatiska variabeln.For example, to get the $PSCulture automatic variable, use the following command.

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

Om du vill visa mer information om Variable: enheten och PowerShell-variabeln Provider skriver du:To display more information about the Variable: drive and the PowerShell Variable provider, type:

Get-Help Variable

Variabel syntax med Provider-sökvägarVariable syntax with provider paths

Du kan använda en provider-sökväg med dollar ( $ )-tecknet och få åtkomst till innehållet i alla providrar som implementerar IContentCmdletProvider -gränssnittet.You can prefix a provider path with the dollar ($) sign, and access the content of any provider that implements the IContentCmdletProvider interface.

Följande inbyggda PowerShell-leverantörer stöder den här notationen:The following built-in PowerShell providers support this notation:

Variabel-cmdletarThe variable cmdlets

PowerShell innehåller en uppsättning cmdletar som är utformade för att hantera variabler.PowerShell includes a set of cmdlets that are designed to manage variables.

Om du vill visa en lista med cmdletar skriver du:To list the cmdlets, type:

Get-Command -Noun Variable

Om du vill ha hjälp med en angiven cmdlet skriver du:To get help for a specific cmdlet, type:

Get-Help <cmdlet-name>
Cmdlet-namnCmdlet Name BeskrivningDescription
Clear-Variable Tar bort värdet för en variabel.Deletes the value of a variable.
Get-Variable Hämtar variablerna i den aktuella konsolen.Gets the variables in the current console.
New-Variable Skapar en ny variabel.Creates a new variable.
Remove-Variable Tar bort en variabel och dess värde.Deletes a variable and its value.
Set-Variable Ändrar värdet för en variabel.Changes the value of a variable.

Se ävenSee also

about_Automatic_Variablesabout_Automatic_Variables

about_Environment_Variablesabout_Environment_Variables

about_Preference_Variablesabout_Preference_Variables

about_Profilesabout_Profiles

about_Quoting_Rulesabout_Quoting_Rules

about_Scopesabout_Scopes

about_Remote_Variablesabout_Remote_Variables