about_Variables
Letzte Aktualisierung: Mai 2014
Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
about_Variables
Beschreibt, wie Variablen Werte speichern, die in Windows PowerShell® verwendet werden können.
Sie können alle Arten von Werten in Windows PowerShell-Variablen speichern. In Variablen werden in der Regel Ergebnisse von Befehlen sowie Elemente gespeichert, die in Befehlen und Ausdrücken verwendet werden, wie z. B. Namen, Pfade, Einstellungen und Werte.
Eine Variable ist eine Arbeitsspeichereinheit, in der Werte gespeichert werden. In Windows PowerShell werden Variablen werden durch Textzeichenfolgen dargestellt, die mit einem Dollarzeichen ($) beginnen, z. B. „$a“, „$process“ oder „$my_var“.
Bei Variablennamen wird die Groß-/Kleinschreibung nicht berücksichtigt. Variablennamen können Leerzeichen und Sonderzeichen enthalten, diese sind jedoch schwierig zu verarbeiten und sollten vermieden werden.
Es gibt verschiedene Arten von Variablen in Windows PowerShell.
Vom Benutzer erstellte Variablen:
Vom Benutzer erstellte Variablen werden durch den Benutzer erstellt und verwaltet. Standardmäßig sind die Variablen, die Sie in der Windows PowerShell-Befehlszeile erstellen, nur vorhanden, solange das Windows PowerShell-Fenster geöffnet ist. Sie werden verworfen, wenn das Fenster geschlossen wird. Um eine Variable zu speichern, fügen Sie sie zu Ihrem Windows PowerShell-Profil hinzu. Sie können Variablen auch in Skripts mit globalem, skriptbezogenem oder lokalem Gültigkeitsbereich erstellen.
Automatische Variablen:
Automatische Variablen speichern den Status von Windows PowerShell. Diese Variablen werden durch Windows PowerShell erstellt, und Windows PowerShell ändert ihre Werte bei Bedarf, um ihre Genauigkeit zu erhalten. Benutzer können die Werte dieser Variablen nicht ändern. Die $PSHome-Variable speichert z. B. den Pfad zum Windows PowerShell-Installationsverzeichnis.
Weitere Informationen sowie eine Liste und eine Beschreibung der automatischen Variablen finden Sie unter „about_Automatic_Variables“.
Einstellungsvariablen:
Einstellungsvariablen speichern Benutzervoreinstellungen für Windows PowerShell. Diese Variablen werden durch Windows PowerShell erstellt und mit Standardwerten aufgefüllt. Benutzer können die Werte dieser Variablen ändern. Die Variable „$MaximumHistoryCount“ bestimmt z. B. die maximale Anzahl von Einträgen im Sitzungsverlauf.
Weitere Informationen sowie eine Liste und eine Beschreibung der Einstellungsvariablen finden Sie unter „about_Preference_Variables“.
Um eine neue Variable zu erstellen, verwenden Sie eine Zuweisungsanweisung, um der Variablen einen Wert zuzuweisen. Sie müssen die Variable nicht deklarieren, bevor Sie sie verwenden. Der Standardwert für alle Variablen lautet $null.
Zum Beispiel:
PS> $MyVariable = 1, 2, 3
PS> $path = "C:\Windows\System32"
Variablen sind sehr nützlich, um die Ergebnisse von Befehlen zu speichern.
Zum Beispiel:
PS> $processes = Get-Process
PS> $Today = (Get-Date).date
Um den Wert einer Variablen anzuzeigen, geben Sie den Variablennamen mit vorangestelltem Dollarzeichen ($) ein.
Zum Beispiel:
PS> $MyVariable
1
2
3
PS> $Today
Thursday, September 03, 2009 12:00:00 AM
Um den Wert einer Variablen zu ändern, weisen Sie der Variablen einen neuen Wert zu.
Die folgenden Beispiele zeigen den Wert der Variablen „$MyVariable“, ändern den Wert der Variable und zeigen dann den neuen Wert.
PS> $MyVariable
1
2
3
PS> $MyVariable = "The green cat."
PS> $MyVariable
The green cat.
Um den Wert einer Variablen zu löschen, verwenden Sie das Cmdlet „Clear-Variable“, oder ändern Sie den Wert auf $null.
PS> Clear-Variable -name MyVariable
-or-
PS> $MyVariable = $null
Um die Variable zu löschen, verwenden Sie die Cmdlets „Remove-Variable“ oder „Remove-Item“. (Diese Cmdlets werden weiter unten in diesem Thema erläutert.)
PS> remove-variable -name MyVariable
PS> remove-item -path variable:\myvariable
Zum Abrufen einer Liste aller Variablen in Ihrer Windows PowerShell-Sitzung geben Sie Folgendes ein:
get-variable
Sie können jede Art von Objekt in einer Variablen speichern, z. B. Ganzzahlen, Zeichenfolgen, Arrays, Hashtabellen und Objekte, die Prozesse, Dienste, Ereignisprotokolle und Computer darstellen.
Windows PowerShell-Variablen sind „locker typisiert“, was bedeutet, dass sie nicht auf einen bestimmten Objekttyp beschränkt sind. Eine einzelne Variable kann auch eine Auflistung (ein „Array“) von verschiedenen Typen von Objekten gleichzeitig enthalten.
Der Datentyp einer Variablen, bei dem es sich um einen .NET Framework-Typ handelt, wird durch die .NET-Typen der Variablenwerte bestimmt.
Zum Beispiel:
PS> $a = 12 (System.Int32)
PS> $a = "Word" (System.String)
PS> $a = 12, "Word" (System.Int32, System.String)
PS> $a = dir C:\Windows\System32 (Files and folders)
Sie können ein Typattribut und eine Umwandlungsnotation verwenden, um sicherzustellen, dass eine Variable nur Objekte des angegebenen Typs oder Objekte enthalten kann, die in diesen Typ konvertiert werden können. Wenn Sie versuchen, einen Wert eines anderen Typs zuzuweisen, versucht Windows PowerShell, den Wert in den für das Attribut angegebenen Typ zu konvertieren. Wenn dies nicht möglich ist, schlägt die Zuweisungsanweisung fehl.
Um eine Umwandlungsnotation zu verwenden, geben Sie vor dem Variablennamen einen Typnamen in eckige Klammern ein (auf der linken Seite der Zuweisungsanweisung). Das folgende Beispiel erstellt eine $number-Variable, die nur Ganzzahlen enthalten kann, eine $words-Variable, die nur Zeichenfolgen enthalten kann, und eine $dates-Variable, die nur DateTime-Objekte enthalten kann.
PS> [int]$number = 8
PS> $a = "12345" (The string is converted to an integer.)
PS> $a = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:3
+ $a <<<< = "Hello"
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
PS> [string]$words = "Hello"
PS> $words = 2 (The integer is converted to a string.)
PS> $words + 10 (The strings are concatenated.)
210
PS> [datetime] $dates = "09/12/91" (The string is converted to a DateTime object.)
PS> $dates
Thursday, September 12, 1991 12:00:00 AM
PS> $dates = 10 (The integer is converted to a DateTime object.)
PS> $dates
Monday, January 01, 0001 12:00:00 AM
Um eine Variable in einem Befehl oder Ausdruck zu verwenden, geben Sie den Variablennamen mit vorangestelltem Dollarzeichen ($) ein.
Wenn der Variablenname (und das Dollarzeichen) nicht in Anführungszeichen eingeschlossen sind oder wenn sie 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 Name der Variablen im Ausdruck verwendet.
Ein Beispiel: Der erste Befehl ruft den Wert der Variablen „$profile“ ab, bei dem es sich um den Pfad zur Windows PowerShell-Benutzerprofildatei in der Windows PowerShell-Konsole handelt. Der zweite Befehl öffnet die Datei im Editor, und der dritte und vierte Befehl verwenden den Namen der Variablen in einem Ausdruck.
PS> $profile
C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS> notepad $profile
- or -
PS> notepad "$profile"
C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS> '$profile'
$profile
PS> 'Use the $profile variable.'
Use the $profile variable.
Weitere Informationen zur Verwendung von Anführungszeichen in Windows PowerShell finden Sie unter „about_Quoting_Rules“.
Variablennamen beginnen mit einem Dollarzeichen. Sie können alphanumerische Zeichen und Sonderzeichen enthalten. Die Länge des Variablennamens wird nur durch den verfügbaren Arbeitsspeicher begrenzt.
Nach Möglichkeit sollten Variablennamen nur alphanumerische Zeichen und den Unterstrich (_) enthalten. Variablennamen, die Leerzeichen und Sonderzeichen enthalten, sind schwierig zu verarbeiten und sollten vermieden werden.
Zum Erstellen oder Anzeigen eines Variablennamens, der Leerzeichen oder Sonderzeichen enthält, schließen Sie den Variablennamen in geschweifte Klammern ein. Dies weist Windows PowerShell an, die Zeichen im Variablennamen so zu interpretieren, wie sie eingegeben wurden.
Der folgende Befehl beispielsweise erstellt eine Variable namens „save-items“ und zeigt sie an.
C:\PS> ${save-items} = "a", "b", "c"
C:\PS> ${save-items}
a
b
c
Der folgende Befehl ruft die untergeordneten Elemente in dem Verzeichnis ab, das durch die Umgebungsvariable „ProgramFiles(x86)“ dargestellt wird.
C:\PS> 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 (Gravis, rückwärts geneigtes Hochkomma), um die geschweiften Klammern mit Escapezeichen zu versehen. Um z. B. eine Variable namens „this{value}is“ mit dem Wert 1 zu erstellen, geben Sie Folgendes ein:
C:\PS> ${this`{value`}is} = 1
C:\PS> ${this`{value`}is}
1
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 (es sei denn, Sie binden das Skript per Dot-Sourcing ein, wodurch es dem aktuellen Bereich hinzugefügt wird).
Sie können einen Bereichsmodifizierer verwenden, um den Gültigkeitsbereich der Variablen zu ändern. Der folgende Ausdruck erstellt eine Variable mit dem Namen „Computers“. Die Variable verfügt über einen globalen Gültigkeitsbereich, auch wenn sie in einem Skript oder einer Funktion erstellt wird.
$global:computers = "Server01"
Weitere Informationen finden Sie unter „about_Scopes“.
SPEICHERN VON VARIABLEN
Von Ihnen erstellte Variablen sind nur in der Sitzung verfügbar, in der Sie sie erstellen. Sie werden gelöscht, wenn Sie die Sitzung schließen.
Um eine Variable in jeder von Ihnen gestarteten Windows PowerShell-Sitzung zu erstellen, fügen Sie die Variable zu Ihrem Windows PowerShell-Profil hinzu.
Wenn Sie z. B. den Wert der Variablen „$VerbosePreference“ in jeder Windows PowerShell-Sitzung ändern möchten, fügen Sie den folgenden Befehl zu Ihrem Windows PowerShell-Profil hinzu.
$VerbosePreference = "Continue"
Sie können diesen Befehl zu Ihrem Profil hinzufügen, indem Sie die Profildatei beispielsweise im Editor öffnen. Weitere Informationen zu Windows PowerShell-Profilen finden Sie unter „about_profiles“.
Der Windows PowerShell-Variablenanbieter erstellt ein Laufwerk „Variable:“, das wie ein Dateisystemlaufwerk aussieht und funktioniert, aber die Variablen Ihrer Sitzung und die zugehörigen Werte enthält.
Um das Laufwerk „Variable:“ zu ändern, geben Sie Folgendes ein:
set-location variable:
(or "cd variable:")
Um die Elemente (Variablen) im Laufwerk „Variable:“ aufzulisten, verwenden Sie die Cmdlets „Get-Item“ oder „Get-ChildItem“. Zum Beispiel:
get-childitem variable:
(or "dir" or "ls")
Zum Abrufen des Werts einer bestimmten Variablen verwenden Sie die Dateisystemnotation, um den Namen des Laufwerks und der Variablen anzugeben. Um beispielsweise die automatische Variable „$PSCulture“ abzurufen, verwenden Sie den folgenden Befehl.
get-item variable:\PSCulture
Name Value
---- -----
PSCulture en-US
Um weitere Informationen über das Laufwerk „Variable:“ und den Windows PowerShell-Variablenanbieter zu erhalten, geben Sie „get-help variable“ ein.
Windows PowerShell enthält eine Reihe von Cmdlets zum Verwalten von Variablen.
Cmdlet Name Description
----------- -----------
Clear-Variable Deletes the value of a variable.
Get-Variable Gets the variables in the current console.
New-Variable Creates a new variable.
Remove-Variable Deletes a variable and its value.
Set-Variable Changes the value of a variable.
Um Hilfe für diese Cmdlets anzuzeigen, geben Sie Folgendes ein: „Get-Help <cmdlet-hame>“.
about_Automatic_Variables
about_Environment_Variables
about_Preference_Variables
about_Profiles
about_Quoting_Rules
about_Scopes