Freigeben über


about_Variables

Kurze Beschreibung

Beschreibt, wie Variablen Werte speichern, die in PowerShell verwendet werden können.

Lange Beschreibung

Sie können alle Typen von Werten in PowerShell-Variablen speichern. Speichern Sie beispielsweise die Ergebnisse von Befehlen, und speichern Sie Elemente, die in Befehlen und Ausdrücken verwendet werden, z. B. Namen, Pfade, Einstellungen und Werte.

Eine Variable ist eine Speichereinheit, in der Werte gespeichert werden. In PowerShell werden Variablen durch Textzeichenfolgen dargestellt, die mit einem Dollarzeichen ($), z$a. B. , oder .$my_var$process

Variablennamen werden nicht zwischen Groß- und Kleinschreibung unterschieden und können Leerzeichen und Sonderzeichen enthalten. Variablennamen, die Sonderzeichen und Leerzeichen enthalten, sind jedoch schwer zu verwenden und sollten vermieden werden. Weitere Informationen finden Sie unter Variablennamen, die Sonderzeichen enthalten.

Es gibt verschiedene Arten von Variablen in PowerShell.

  • Vom Benutzer erstellte Variablen: Vom Benutzer erstellte Variablen werden vom Benutzer erstellt und verwaltet. Standardmäßig sind die Variablen, die Sie in der PowerShell-Befehlszeile erstellen, nur vorhanden, wenn das PowerShell-Fenster geöffnet ist. Wenn die PowerShell-Fenster geschlossen werden, werden die Variablen gelöscht. Um eine Variable zu speichern, fügen Sie sie Ihrem PowerShell-Profil hinzu. Sie können variablen auch in Skripts mit globaler, skript- oder lokaler Bereich erstellen.

  • Automatische Variablen: Automatische Variablen speichern den Status von PowerShell. Diese Variablen werden von PowerShell erstellt, und PowerShell ändert ihre Werte nach Bedarf, um ihre Genauigkeit aufrechtzuerhalten. Benutzer können den Wert dieser Variablen nicht ändern. Beispielsweise speichert die $PSHOME Variable den Pfad zum PowerShell-Installationsverzeichnis.

    Weitere Informationen, eine Liste und eine Beschreibung der automatischen Variablen finden Sie unter about_Automatic_Variables.

  • Einstellungsvariablen: Einstellungsvariablen speichern Benutzereinstellungen für PowerShell. Diese Variablen werden von PowerShell erstellt und mit Standardwerten aufgefüllt. Benutzer können die Werte dieser Variablen ändern. Die Variable bestimmt beispielsweise $MaximumHistoryCount die maximale Anzahl von Einträgen im Sitzungsverlauf.

    Weitere Informationen, eine Liste und eine Beschreibung der Einstellungsvariablen finden Sie unter about_Preference_Variables.

Arbeiten mit Variablen

Verwenden Sie zum Erstellen einer neuen Variablen eine Zuweisungsanweisung, um der Variablen einen Wert zuzuweisen. Sie müssen die Variable nicht deklarieren, bevor Sie sie verwenden. Der Standardwert aller Variablen ist $null.

Wenn Sie eine Liste aller Variablen in Ihrer PowerShell-Sitzung abrufen möchten, geben Sie folgendes ein Get-Variable. Die Variablennamen werden ohne das vorangehende Dollarzeichen ($) angezeigt, das zum Verweisen auf Variablen verwendet wird.

Zum Beispiel:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Variablen sind nützlich, um die Ergebnisse von Befehlen zu speichern.

Zum Beispiel:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Um den Wert einer Variablen anzuzeigen, geben Sie den Variablennamen ein, dem ein Dollarzeichen ($) vorangestellt ist.

Zum Beispiel:

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

Um den Wert einer Variablen zu ändern, weisen Sie der Variablen einen neuen Wert zu.

In den folgenden Beispielen wird der Wert der $MyVariable Variablen angezeigt, der Wert der Variablen geändert und anschließend der neue Wert angezeigt.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

Um den Wert einer Variablen zu löschen, verwenden Sie das Clear-Variable Cmdlet, oder ändern Sie den Wert in $null.

Clear-Variable -Name MyVariable
$MyVariable = $null

Verwenden Sie "Remove-Variable " oder "Remove-Item", um die Variable zu löschen.

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

Es ist auch möglich, mehreren Variablen Mit einer Anweisung Werte zuzuweisen. In den folgenden Beispielen wird mehreren Variablen derselbe Wert zugewiesen:

$a = $b = $c = 0

Im nächsten Beispiel werden mehreren Variablen mehrere Werte zugewiesen.

$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

Ausführlichere Informationen finden Sie im Abschnitt "Zuweisen mehrerer Variablen " von about_Assignment_Operators.

Typen von Variablen

Sie können jeden Objekttyp in einer Variablen speichern, einschließlich ganzzahliger Zahlen, Zeichenfolgen, Arrays und Hashtabellen. Und Objekte, die Prozesse, Dienste, Ereignisprotokolle und Computer darstellen.

PowerShell-Variablen sind lose typiert, was bedeutet, dass sie nicht auf einen bestimmten Objekttyp beschränkt sind. Eine einzelne Variable kann sogar eine Auflistung oder ein Array unterschiedlicher Objekttypen gleichzeitig enthalten.

Der Datentyp einer Variablen wird durch die .NET-Typen der Werte der Variablen bestimmt. Verwenden Sie "Get-Member", um den Objekttyp einer Variablen anzuzeigen.

Zum Beispiel:

$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

Sie können ein Typattribute und eine Umwandlungsnotation verwenden, um sicherzustellen, dass eine Variable nur bestimmte Objekttypen oder Objekte enthalten kann, die in diesen Typ konvertiert werden können. Wenn Sie versuchen, einen Wert eines anderen Typs zuzuweisen, versucht PowerShell, den Wert in seinen Typ zu konvertieren. Wenn der Typ nicht konvertiert werden kann, schlägt die Zuordnungsanweisung fehl.

Wenn Sie die Umwandlungsnotation verwenden möchten, geben Sie einen Typnamen ein, der in eckige Klammern eingeschlossen ist, vor dem Variablennamen (auf der linken Seite der Zuordnungsanweisung). Im folgenden Beispiel wird eine $number Variable erstellt, die nur ganze Zahlen, eine $words Variable, die nur Zeichenfolgen enthalten kann, und eine $dates Variable, die nur DateTime-Objekte enthalten kann.

[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

Verwenden von Variablen in Befehlen und Ausdrücken

Wenn Sie eine Variable in einem Befehl oder Ausdruck verwenden möchten, geben Sie den Variablennamen ein, dem das Dollarzeichen ($) vorangestellt ist.

Wenn der Variablenname und das Dollarzeichen nicht in Anführungszeichen eingeschlossen sind oder in doppelte Anführungszeichen (") eingeschlossen sind, wird der Wert der Variablen im Befehl oder Ausdruck verwendet.

Wenn der Variablenname und das Dollarzeichen in einfache Anführungszeichen (') eingeschlossen sind, wird der Variablenname im Ausdruck verwendet.

Weitere Informationen zur Verwendung von Anführungszeichen in PowerShell finden Sie unter about_Quoting_Rules.

In diesem Beispiel wird der Wert der $PROFILE Variablen abgerufen, bei der es sich um den Pfad zur PowerShell-Benutzerprofildatei in der PowerShell-Konsole handelt.

$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

In diesem Beispiel werden zwei Befehle gezeigt, die das PowerShell-Profil in notepad.exe öffnen können. Das Beispiel mit Anführungszeichen ("Double-Anführungszeichen) verwendet den Wert der Variablen.

notepad $PROFILE

notepad "$PROFILE"

In den folgenden Beispielen werden Einfache Anführungszeichen (') verwendet, die die Variable als Literaltext behandeln.

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

Variablennamen, die Sonderzeichen enthalten

Variablennamen beginnen mit einem Dollarzeichen ($) und können alphanumerische Zeichen und Sonderzeichen enthalten. Die Länge des Variablennamens ist nur durch den verfügbaren Arbeitsspeicher begrenzt.

Die bewährte Methode besteht darin, dass Variablennamen nur alphanumerische Zeichen und das Unterstrichzeichen (_) enthalten. Variablennamen, die Leerzeichen und andere Sonderzeichen enthalten, sind schwer zu verwenden und sollten vermieden werden.

Alphanumerische Variablennamen können folgende Zeichen enthalten:

  • Unicode-Zeichen aus diesen Kategorien: Lu, Ll, Lt, Lm, Lo oder Nd.
  • Unterstrich (_) Zeichen.
  • Fragezeichen (?)

Die folgende Liste enthält die Unicode-Kategoriebeschreibungen. Weitere Informationen finden Sie unter UnicodeCategory.

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

Wenn Sie einen Variablennamen erstellen oder anzeigen möchten, der Leerzeichen oder Sonderzeichen enthält, schließen Sie den Variablennamen in die geschweiften Klammern ({}) ein. Die geschweiften geschweiften Klammern leiten PowerShell aus, um die Zeichen des Variablennamens als Literale zu interpretieren.

Sonderzeichenvariablennamen können folgende Zeichen enthalten:

  • Jedes Unicode-Zeichen mit den folgenden Ausnahmen:
    • Das schließende geschweifte Klammerzeichen (}) (U+007D).
    • Das Hintergrundzeichen () (`U+0060). Der Backtick wird verwendet, um Unicode-Zeichen zu escapen, sodass sie als Literale behandelt werden.

PowerShell verfügt über reservierte Variablen wie $$, $?, $^und $_ die alphanumerische und Sonderzeichen enthalten. Weitere Informationen finden Sie unter about_Automatic_Variables.

Mit dem folgenden Befehl wird beispielsweise die Variable mit dem Namen save-itemserstellt. Die geschweiften geschweiften Klammern ({}) sind erforderlich, da der Variablenname ein Bindestrich () Sonderzeichen enthält-.

${save-items} = "a", "b", "c"
${save-items}
a
b
c

Der folgende Befehl ruft die untergeordneten Elemente im Verzeichnis ab, das durch die ProgramFiles(x86) Umgebungsvariable dargestellt wird.

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

Um auf einen Variablennamen zu verweisen, der geschweifte Klammern enthält, schließen Sie den Variablennamen in geschweifte Klammern ein, und verwenden Sie das Backtick-Zeichen, um die geschweiften Klammern zu escapen. So erstellen Sie z. B. eine Variable namens this{value}is Typ:

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

Variablen und Bereich

Standardmäßig sind Variablen nur in dem Bereich verfügbar, in dem sie erstellt werden.

Beispielsweise ist eine Variable, die Sie in einer Funktion erstellen, nur innerhalb der Funktion verfügbar. Eine Variable, die Sie in einem Skript erstellen, ist nur innerhalb des Skripts verfügbar. Wenn Sie das Skript punktieren, wird die Variable dem aktuellen Bereich hinzugefügt. Weitere Informationen finden Sie unter about_Scopes.

Sie können einen Bereichsmodifizierer verwenden, um den Standardumfang der Variablen zu ändern. Der folgende Ausdruck erstellt eine Variable mit dem Namen Computers. Die Variable hat einen globalen Bereich, auch wenn sie in einem Skript oder einer Funktion erstellt wird.

$Global:Computers = "Server01"

Für alle Skripts oder Befehle, die außerhalb der Sitzung ausgeführt werden, benötigen Sie den Using Bereichsmodifizierer, um Variablenwerte aus dem aufrufenden Sitzungsbereich einzubetten, damit außerhalb des Sitzungscodes darauf zugegriffen werden kann.

Weitere Informationen finden Sie unter about_Remote_Variables.

Speichern von Variablen

Variablen, die Sie erstellen, sind nur in der Sitzung verfügbar, in der Sie sie erstellen. Sie gehen verloren, wenn Sie Ihre Sitzung schließen.

Um die Variable in jeder powerShell-Sitzung zu erstellen, die Sie starten, fügen Sie die Variable ihrem PowerShell-Profil hinzu.

Um beispielsweise den Wert der $VerbosePreference Variablen in jeder PowerShell-Sitzung zu ändern, fügen Sie Ihrem PowerShell-Profil den folgenden Befehl hinzu.

$VerbosePreference = "Continue"

Sie können diesen Befehl ihrem PowerShell-Profil hinzufügen, indem Sie die $PROFILE Datei in einem Text-Editor öffnen, z . B. notepad.exe. Weitere Informationen über PowerShell-Profile finden Sie unter about_Profiles.

Die Variable: Laufwerk

Der PowerShell-Variable-Anbieter erstellt ein Variable: Laufwerk, das wie ein Dateisystemlaufwerk aussieht und funktioniert, enthält jedoch die Variablen in Ihrer Sitzung und deren Werte.

Verwenden Sie den folgenden Befehl, um zum Variable: Laufwerk zu wechseln:

Set-Location Variable:

Verwenden Sie Get-Item die Oder-CmdletsGet-ChildItem, um die Elemente und Variablen auf dem Variable: Laufwerk aufzulisten.

Get-ChildItem Variable:

Verwenden Sie zum Abrufen des Werts einer bestimmten Variablen die Dateisystemnotation, um den Namen des Laufwerks und den Namen der Variablen anzugeben. Verwenden Sie beispielsweise den folgenden Befehl, um die $PSCulture automatische Variable abzurufen.

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

Um weitere Informationen zum Variable: Laufwerk und zum PowerShell-Variablenanbieter anzuzeigen, geben Sie Folgendes ein:

Get-Help Variable

Variable Syntax mit Anbieterpfaden

Sie können einem Anbieterpfad das Dollarzeichen ($) voranstellen und auf den Inhalt eines beliebigen Anbieters zugreifen, der die IContentCmdletProvider-Schnittstelle implementiert.

Die folgenden integrierten PowerShell-Anbieter unterstützen diese Schreibweise:

Die Variablen-Cmdlets

PowerShell enthält eine Reihe von Cmdlets, die zum Verwalten von Variablen konzipiert sind.

Geben Sie Folgendes ein, um die Cmdlets aufzulisten:

Get-Command -Noun Variable

Um Hilfe zu einem bestimmten Cmdlet zu erhalten, geben Sie Folgendes ein:

Get-Help <cmdlet-name>
Cmdlet-Name Beschreibung
Clear-Variable Löscht den Wert einer Variablen.
Get-Variable Ruft die Variablen in der aktuellen Konsole ab.
New-Variable Erstellt einer neuen Variable.
Remove-Variable Löscht eine Variable und ihren Wert.
Set-Variable Ändert den Wert einer Variablen.

Siehe auch