Informationen zu Variablen
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 Einheit des Arbeitsspeichers, in der Werte gespeichert werden. In PowerShell werden Variablen durch Textzeichenfolgen dargestellt, die mit einem Dollarzeichen () beginnen,$
z $a
. B. , $process
oder $my_var
.
Variablennamen beachten die Groß-/Kleinschreibung nicht und 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 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 an 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 auch Variablen in Skripts mit globalem, Skript- oder lokalem Bereich erstellen.
Automatische Variablen: Automatische Variablen speichern den Status von PowerShell. Diese Variablen werden von PowerShell erstellt, und PowerShell ändert ihre Werte bei Bedarf, um ihre Genauigkeit zu gewährleisten. Benutzer können den Wert dieser Variablen nicht ändern. Die Variable speichert beispielsweise
$PSHOME
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 Zuweisungsanweisung, 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 vorherige Dollarzeichen ($
) angezeigt, das zum Verweisen auf Variablen verwendet wird.
Beispiel:
$MyVariable = 1, 2, 3
$Path = "C:\Windows\System32"
Variablen sind nützlich, um die Ergebnisse von Befehlen zu speichern.
Beispiel:
$Processes = Get-Process
$Today = (Get-Date).DateTime
Geben Sie zum Anzeigen des Werts einer Variablen den Variablennamen vor einem Dollarzeichen ($
) ein.
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
Typen von Variablen
Sie können jeden Objekttyp in einer Variablen speichern, einschließlich Ganzzahlen, Zeichenfolgen, Arrays und Hashtabellen. Und Objekte, die Prozesse, Dienste, Ereignisprotokolle und Computer darstellen.
PowerShell-Variablen sind lose typisiert, was bedeutet, dass sie nicht auf einen bestimmten Objekttyp beschränkt sind. Eine einzelne Variable kann sogar eine Auflistung oder ein Array von verschiedenen 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.
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 Type-Attribut und eine Castnotation 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 Zuweisungsanweisung fehl.
Um die Umwandlungsnotation zu verwenden, geben Sie vor dem Variablennamen (auf der linken Seite der Zuweisungsanweisung) einen Typnamen ein, der in Klammern eingeschlossen ist. Im folgenden Beispiel wird eine $number
Variable erstellt, die nur ganze Zahlen enthalten kann, eine $words
Variable, die nur Zeichenfolgen enthalten darf, 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
Um eine Variable in einem Befehl oder Ausdruck zu verwenden, geben Sie den Variablennamen vor dem Dollarzeichen ($
) ein.
Wenn der Variablenname und das Dollarzeichen nicht in Anführungszeichen 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. Dies ist der Pfad zur PowerShell-Benutzerprofildatei in der PowerShell-Konsole.
$PROFILE
C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
In diesem Beispiel werden zwei Befehle angezeigt, die das PowerShell-Profil in notepad.exeöffnen können. Das Beispiel mit doppelten Anführungszeichen ("
) verwendet den Wert der Variablen.
notepad $PROFILE
notepad "$PROFILE"
In den folgenden Beispielen werden 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 den Unterstrich (_
) enthalten. Variablennamen, die Leerzeichen und andere Sonderzeichen enthalten, sind schwierig zu verwenden und sollten vermieden werden.
Alphanumerische Variablennamen können die folgenden Zeichen enthalten:
- Unicode-Zeichen aus diesen Kategorien: Lu, Ll, Lt, Lm, Lo oder Nd.
- Unterstrich (
_
) - Fragezeichen (
?
)
Die folgende Liste enthält die Unicode-Kategoriebeschreibungen. Weitere Informationen finden Sie unter UnicodeCategory.
- Lu : GroßbuchstabenLetter
- 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 mit den geschweiften Klammernzeichen ({}
) ein.
Die geschweifte Klammer leitet PowerShell an, um die Zeichen des Variablennamens als Literale zu interpretieren.
Namen von Sonderzeichenvariablen können folgende Zeichen enthalten:
- Alle Unicode-Zeichen mit den folgenden Ausnahmen:
- Das schließende geschweifte Klammerzeichen (
}
) (U+007D). - Das Backtickzeichen (
`
) () (U+0060). Der Backtick wird verwendet, um Unicode-Zeichen zu escapen, sodass sie als Literale behandelt werden.
- Das schließende geschweifte Klammerzeichen (
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-items
erstellt. Die geschweiften Klammern ({}
) werden benötigt, da der Variablenname ein Sonderzeichen für Bindestrich (-
) enthält.
${save-items} = "a", "b", "c"
${save-items}
a
b
c
Mit dem folgenden Befehl werden die untergeordneten Elemente in dem Verzeichnis abgerufen, das von der Umgebungsvariablen ProgramFiles(x86)
dargestellt wird.
Get-ChildItem ${env:ProgramFiles(x86)}
Um auf einen Variablennamen zu verweisen, der Klammern enthält, schließen Sie den Variablennamen in Klammern ein, und verwenden Sie das Backtick-Zeichen, um die Klammern zu escapen. Um beispielsweise eine Variable mit dem Namen typ this{value}is
zu erstellen:
${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 Dotquelle 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 namens Computers
. Die Variable verfügt über einen globalen Bereich, auch wenn sie in einem Skript oder einer Funktion erstellt wird.
$Global:Computers = "Server01"
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 dem 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.
Die Variable: Laufwerk
Der PowerShell-Variablenanbieter erstellt ein Variable:
Laufwerk, das wie ein Dateisystemlaufwerk aussieht und verhält, aber die Variablen in Ihrer Sitzung und deren Werte enthält.
Verwenden Sie den Variable:
folgenden Befehl, um zum Laufwerk zu wechseln:
Set-Location Variable:
Verwenden Sie Get-Item
die Cmdlets oderGet-ChildItem
, um die Elemente und Variablen auf dem Variable:
Laufwerk auflisten zu können.
Get-ChildItem Variable:
Um den Wert einer bestimmten Variablen abzurufen, verwenden Sie 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
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 ($
) voranschreiben 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 Folgendes ein, um die Cmdlets auflisten zu können:
Get-Command -Noun Variable
Geben Sie Folgendes ein, um Hilfe für ein bestimmtes Cmdlet zu erhalten:
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. |