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 $ () beginnen, z. B. $a , oder $process $my_var .

Bei Variablennamen wird die Groß-/Kleinschreibung nicht beachtet, und sie können Leerzeichen und Sonderzeichen enthalten. Variablennamen, die Sonderzeichen und Leerzeichen enthalten, sind jedoch schwierig zu verwenden und sollten vermieden werden. Weitere Informationen finden Sie unter Variablennamen, die Sonderzeichen enthalten.

Es gibt mehrere verschiedene Typen 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, während 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 globalem, Skript- oder lokalem Bereich erstellen.

  • Automatische Variablen: Automatische Variablen speichern den Zustand 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. Beispielsweise bestimmt die $MaximumHistoryCount Variable 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

Um eine neue Variable zu erstellen, verwenden Sie eine Zuweisungs-Anweisung, um der Variablen einen Wert zuzuweisen. Sie müssen die Variable nicht deklarieren, bevor Sie sie verwenden. Der Standardwert aller Variablen ist $null .

Geben Sie ein, um eine Liste aller Variablen in Ihrer PowerShell-Sitzung Get-Variable abzurufen. Die Variablennamen werden ohne das vorangehende $ Dollarzeichen () angezeigt, das zum Verweisen auf Variablen verwendet wird.

Beispiel:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Variablen sind nützlich zum Speichern der Ergebnisse von Befehlen.

Beispiel:

$Processes = Get-Process

$Today = (Get-Date).DateTime

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

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 dann 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

Um die Variable zu löschen, verwenden Sie Remove-Variable oder Remove-Item.

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

Es ist auch möglich, Werte für mehrere Variablen mit einer -Anweisung zu erstellen. In den folgenden Beispielen wird der gleiche Wert mehreren Variablen 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 Assigning multiple variables (Zuweisen mehrerer Variablen) 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 gleichzeitig eine Auflistung oder ein Array verschiedener Objekttypen enthalten.

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

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 Typattribut und eine Umwandlungs notation 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 zu zuweisen, versucht PowerShell, den Wert in seinen Typ zu konvertieren. Wenn der Typ nicht konvertiert werden kann, schlägt die Zuweisungs-Anweisung fehl.

Geben Sie zur Verwendung der Cast-Notation vor dem Variablennamen (links in der Zuweisungsanweisung) einen Typnamen in Klammern ein. Im folgenden Beispiel wird eine Variable erstellt, die nur ganze Zahlen enthalten kann, eine Variable, die nur Zeichenfolgen enthalten darf, und eine Variable, die nur $number $words $dates 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

Um eine Variable in einem Befehl oder Ausdruck zu verwenden, geben Sie den Variablennamen ein, dem das Dollarzeichen $ () voran steht.

Wenn der Variablenname und das Dollarzeichen nicht in Anführungszeichen eingeschlossen 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.

Dieses Beispiel ruft den Wert der $PROFILE Variablen ab, die den Pfad zur PowerShell-Benutzerprofildatei in der PowerShell-Konsole darstellt.

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

In diesem Beispiel werden zwei Befehle angezeigt, die das PowerShell-Profil in notepad.exe öffnen können. Im Beispiel mit doppelten " Anführungszeichen () wird der Wert der Variablen verwendet.

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 beschränkt.

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

Alphanumerische Variablennamen können diese Zeichen enthalten:

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

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

  • Lu – UppercaseLetter
  • Ll – KleinbuchstabenLetter
  • Lt – TitlecaseLetter
  • Lm – ModifiziererLetter
  • Lo – OtherLetter
  • Nd – DecimalDigitNumber

Um einen Variablennamen zu erstellen oder anzuzeigen, der Leerzeichen oder Sonderzeichen enthält, schließen Sie den Variablennamen in die geschweiften Klammern {} () ein. Die geschweiften Klammern geben PowerShell an, die Zeichen des Variablennamens als Literale zu interpretieren.

Variablennamen für Sonderzeichen können folgende Zeichen enthalten:

  • Beliebiges Unicode-Zeichen mit den folgenden Ausnahmen:
    • Die schließende geschweifte Klammer ( } ) (U+007D).
    • Das Backtickzeichen ( ` ) (U+0060). Der Backtick wird verwendet, um Unicode-Zeichen mit Escapezeichen 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.

Der folgende Befehl erstellt beispielsweise die Variable mit dem Namen save-items . Die geschweiften Klammern ( ) sind erforderlich, da der Variablenname einen {} Bindestrich () als - 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 Umgebungsvariable ProgramFiles(x86) 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 Backtickzeichen, um die geschweiften Klammern zu escapen. So erstellen Sie beispielsweise eine Variable mit dem Namen this{value}is type:

${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 als Punktquelle verwenden, wird die Variable dem aktuellen Bereich hinzugefügt. Weitere Informationen finden Sie unter about_Scopes.

Sie können einen Bereichsmodifizierer verwenden, um den Standardbereich der Variablen zu ändern. Der folgende Ausdruck erstellt eine Variable mit dem Namen Computers . Die Variable hat einen globalen Gültigkeitsbereich, 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

Von Ihnen erstellte Variablen sind nur in der Sitzung verfügbar, in der Sie sie erstellen. Sie sind 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 zu PowerShell-Profilen finden Sie unter about_Profiles.

Variable: Laufwerk

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

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

Set-Location Variable:

Um die Elemente und Variablen auf dem Variable: Laufwerk aufzulisten, verwenden Sie die Get-Item Cmdlets oder Get-ChildItem .

Get-ChildItem Variable:

Verwenden Sie zum Abrufen des Werts einer bestimmten Variablen die Dateisystem-Notation, 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

Geben Sie Folgendes ein, um weitere Informationen zum Variable: Laufwerk und zum PowerShell-Variablenanbieter anzuzeigen:

Get-Help Variable

Variablensyntax mit Anbieterpfaden

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

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

Die Variablen-Cmdlets

PowerShell enthält eine Reihe von Cmdlets, die zum Verwalten von Variablen entwickelt wurden.

Geben Sie Zum Auflisten der Cmdlets Ein:

Get-Command -Noun Variable

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

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 eine neue Variable.
Remove-Variable Löscht eine Variable und ihren Wert.
Set-Variable Ändert den Wert einer Variablen.

Weitere Informationen

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes

about_Remote_Variables