THEMA about_automatic_variables KURZBESCHREIBUNG Beschreibt Variablen, von denen Zustandsinformationen für Windows PowerShell gespeichert werden. Diese Variablen werden von Windows PowerShell erstellt und verwaltet. DETAILBESCHREIBUNG In der folgenden Liste sind die automatischen Variablen in Windows PowerShell aufgeführt: $$ Enthält das letzte Token in der letzten Zeile, die von der Sitzung empfangen wurde. $? Enthält den Ausführungsstatus des letzten Vorgangs. Enthält TRUE, wenn der letzte Vorgang erfolgreich war; FALSE, wenn beim letzten Vorgang ein Fehler aufgetreten ist. $^ Enthält das erste Token in der letzten Zeile, die von der Sitzung empfangen wurde. $_ Enthält das aktuelle Objekt im Pipelineobjekt. Diese Variable kann in Befehlen verwendet werden, mit denen eine Aktion für alle Objekte oder für ausgewählte Objekte in einer Pipeline ausgeführt wird. $Args Enthält ein Array der nicht deklarierten Parameter und/oder der Parameterwerte, die an eine Funktion, ein Skript oder einen Skriptblock übergeben werden. Beim Erstellen einer Funktion können Sie die Parameter mit dem Schlüsselwort "param" deklarieren, oder indem Sie eine durch Trennzeichen getrennte Liste von Parametern in Klammern nach dem Funktionsnamen hinzufügen. $ConsoleFileName Enthält den Pfad der Konsolendatei (.psc1), die in der Sitzung zuletzt verwendet wurde. Diese Variable wird aufgefüllt, wenn Windows PowerShell mit dem PSConsoleFile-Parameter gestartet wird oder wenn mit dem Cmdlet "Export-Console" Snap-In-Namen in eine Konsolendatei exportiert werden. Wenn Sie das Cmdlet "Export-Console" ohne Parameter verwenden, aktualisiert das Cmdlet automatisch die in der Sitzung zuletzt verwendete Konsolendatei. Mithilfe dieser automatischen Variablen können Sie bestimmen, welche Datei aktualisiert wird. $Error Enthält ein Array von Fehlerobjekten, die die zuletzt aufgetretenen Fehler darstellen. Der letzte aufgetretene Fehler stellt das erste Fehlerobjekt im Array ("$Error[0]") dar. $Event Enthält ein PSEventArgs-Objekt, das das zu verarbeitende Ereig- nis darstellt. Diese Variable wird nur im Action-Block eines Ereignisregistrierungsbefehls, z. B. "Register-ObjectEvent", aufgefüllt. Der Wert der Variablen ist mit dem Objekt iden- tisch, das vom Cmdlet "Get-Event" zurückgegeben wird. Daher können Sie die Eigenschaften der Variablen "$Event", z. B. $Event.TimeGenerated, in einem Action-Scriptblock verwenden. $EventSubscriber Enthält ein PSEventSubscriber-Objekt, das den Ereignis- abonnenten des zu verarbeitenden Ereignisses darstellt.Diese Variable wird nur im Action-Block eines Ereignisregistrierungs- befehls aufgefüllt. Der Wert der Variablen ist mit dem Objekt identisch, das vom Cmdlet "Get-EventSubscriber" zurückgegeben wird. $ExecutionContext Enthält ein EngineIntrinsics-Objekt, das den Ausführungskontext des Windows PowerShell-Hosts darstellt. Mithilfe dieser Variablen können Sie die Ausführungsobjekte suchen, die für Cmdlets verfügbar sind. $False Enthält FALSE. Mit dieser Variablen können Sie FALSE in Befehlen und Skripts darstellen, sodass Sie nicht die Zeichenfolge "false" verwenden müssen. Die Zeichenfolge kann als TRUE interpretiert werden, wenn sie in eine nicht leere Zeichenfolge oder eine ganze Zahl ungleich 0 konvertiert wurde. $ForEach Enthält den Enumerator einer ForEach-Object-Schleife. Sie können die Eigenschaften und die Methoden von Enumeratoren für den Wert der $ForEach-Variablen verwenden. Diese Variable ist nur während der Ausführung der For-Schleife vorhanden. Bei Abschluss der Schleife wird sie gelöscht. $Home Enthält den vollständigen Pfad zum Stammverzeichnis des Benutzers. Diese Variable ist die Entsprechung der %homedrive%%homepath%-Umgebungsvariablen, normalerweise "C:\Dokumente und Einstellungen\<Benutzer>". $Host Enthält ein Objekt, das die aktuelle Hostanwendung für Windows PowerShell darstellt. Mit dieser Variablen können Sie den aktuellen Host in Befehlen darstellen oder die Eigenschaften des Hosts anzeigen bzw. ändern, z. B. die $Host.version-Eigen- schaft oder die $Host.CurrentCulture-Eigenschaft oder $host.ui.rawui.setbackgroundcolor("Red"). $Input Ein Enumerator mit der Eingabe, die an eine Funktion übergeben wird. Bei der Variablen "$Input" wird die Groß- und Kleinschreibung beachtet, und sie ist in nur Funktionen und Skriptblöcken verfügbar. (Skriptblöcke sind im Wesentlichen unbenannte Funktionen.) Im Process-Block einer Funktion enthält die Variable "$Input" das Objekt, das sich derzeit in der Pipeline befindet. Nach Abschluss des Process-Blocks weist "$Input" den Wert NULL auf. Wenn die Funktion über keinen Process-Block verfügt, ist der Wert von "$Input" für den abschließenden Block verfügbar, und er enthält die gesamte Eingabe für die Funktion. $LastExitCode Enthält den Exitcode des zuletzt ausgeführten Windows-Programms. $Matches Die Variable "$Matches" wird mit den Operatoren -match und -notmatch verwendet. Wenn eine skalare Eingabe an den Operator -match oder -notmatch gesendet und eine Übereinstimmung erkannt wird, wird ein boolescher Wert zurückgegeben, und die automatische Variable "$Matches" wird mit einer Hashtabelle der gefundenen Zeichenfolgenwerte aufgefüllt. Weitere Informationen zum Operator -match finden Sie unter about_comparison_operators. $MyInvocation Enthält ein Objekt mit Informationen zum aktuellen Befehl, z. B. ein Skript, eine Funktion oder einen Skriptblock. Mithilfe der Informationen im Objekt, z. B. mit dem Pfad und dem Dateinamen des Skripts ($myinvocation.mycommand.path) oder mit dem Namen einer Funktion ($myinvocation.mycommand.name), können Sie den aktuellen Befehl bestimmen. Dies ist besonders hilfreich beim Suchen des Namens des derzeit ausgeführten Skripts. $NestedPromptLevel Enthält die aktuelle Ebene der Eingabeaufforderung. Mit dem Wert 0 wird die ursprüngliche Ebene der Eingabeaufforderung angegeben. Beim Eingeben einer geschachtelten Ebene wird der Wert inkrementiert, beim Verlassen einer geschachtelten Ebene wird er dekrementiert. Windows PowerShell zeigt z. B. eine geschachtelte Eingabeaufforderung an, wenn die $Host.EnterNestedPrompt-Methode verwendet wird. Bei Erreichen eines Haltepunkts im Windows PowerShell-Debugger wird von Windows PowerShell ebenfalls eine geschachtelte Eingabeaufforderung angezeigt. Wenn Sie eine geschachtelte Eingabeaufforderung aufrufen, wird die Ausführung des aktuellen Befehls von Windows PowerShell unterbrochen, der Ausführungskontext wird gespeichert und der Wert der Variablen "$NestedPromptLevel" wird inkrementiert. Wenn Sie weitere geschachtelte Eingabeaufforderungen (mit bis zu 128 Ebenen) erstellen oder zur ursprünglichen Eingabeaufforderung zurückkehren möchten, schließen Sie die Ausführung des Befehls ab, oder geben Sie "exit" ein. Anhand der Variablen "$NestedPromptLevel" können Sie die Ebene der Eingabeaufforderung verfolgen. Sie können eine alternative Windows PowerShell-Eingabeaufforderung erstellen, die diesen Wert enthält, sodass er immer sichtbar ist. $NULL Enthält den Wert NULL oder einen leeren Wert. Mit dieser Variablen können Sie NULL in Befehlen und Skripts darstellen, sodass Sie nicht die Zeichenfolge "NULL" verwenden müssen. Die Zeichenfolge kann als TRUE interpretiert werden, wenn sie in eine nicht leere Zeichenfolge oder eine ganze Zahl ungleich 0 konvertiert wurde. $PID Enthält die Prozess-ID (PID) des Prozesses, der die aktuelle Windows PowerShell-Sitzung hostet. $Profile Enthält den vollständigen Pfad des Windows PowerShell-Profils für den aktuellen Benutzer sowie der aktuellen Hostanwendung. Mithilfe dieser Variablen können Sie das Profil in Befehlen darstellen. Mit der Variablen können Sie beispielsweise in einem Befehl bestimmen, ob ein Profil erstellt wurde: test-path $profile Mit der Variablen können Sie in einem Befehl auch ein Profil erstellen: new-item -type file -path $pshome -force Darüber hinaus können Sie sie in einem Befehl verwenden, um das Profil in Editor zu öffnen: notepad $profile $PSBoundParameters Enthält ein Wörterbuch mit den aktiven Parametern und deren aktuellen Werten. Diese Variable verfügt nur in Bereichen über einen Wert, in denen Parameter deklariert sind, z. B. in einem Skript oder in einer Funktion. Mit der Variablen können Sie die aktuellen Werte von Parametern anzeigen oder ändern sowie Parameterwerte an ein anderes Skript oder eine andere Funktion übergeben. Beispiel: function test { param($a, $b) #Die Parameter werden im Wörterbuchformat angezeigt. $psboundparameters # Rufen Sie die Test1-Funktion mit "$a" und "$b" auf. test1 @psboundparameters } $PsCmdlet Enthält ein Objekt, das das ausgeführte Cmdlet bzw. die ausgeführte erweiterte Funktion darstellt. Mithilfe der Eigenschaften und Methoden des Objekts im Cmdlet oder im Funktionscode können Sie auf die Verwendungsbedingungen reagieren. Die ParameterSetName-Eigenschaft enthält z. B. den Namen des verwendeten Parametersatzes, und mit der ShouldProcess-Methode werden dem Cmdlet der WhatIf-Parameter und der Confirm-Parameter dynamisch hinzugefügt. Weitere Informationen zur automatischen Variablen "$PSCmdlet" finden Sie unter about_Functions_Advanced. $PsCulture Enthält den Namen der Kultur, die derzeit im Betriebssystem festgelegt ist. Durch die Kultur wird das Anzeigeformat von Elementen wie Zahlen oder Währungs- und Datumsangaben bestimmt. Dies ist der Wert der System.Globalization.CultureInfo. CurrentCulture.Name-Eigenschaft des Systems. Rufen Sie das System.Globalization.CultureInfo-Objekt für das System mit dem Cmdlet "Get-Culture" ab. $PSDebugContext Während des Debuggens enthält diese Variable Informationen zur Debugumgebung. Andernfalls enthält sie einen NULL-Wert. Daher können Sie mit der Variablen angeben, ob die Steuerung beim Debugger liegt. Die aufgefüllte Variable enthält ein PsDebugContext-Objekt, das über die Breakpoints-Eigenschaft und die InvocationInfo-Eigenschaft verfügt. Die InvocationInfo- Eigenschaft enthält mehrere hilfreiche Eigenschaften, z. B. die Location-Eigenschaft. Mit der Location-Eigenschaft wird der Pfad des debuggten Skripts angegeben. $PsHome Enthält dem vollständigen Pfad des Installationsverzeichnisses für Windows PowerShell, normalerweise "%windir%\System32\WindowsPowerShell \v1.0". Sie können diese Variable in den Pfaden für Windows PowerShell-Dateien angeben. Mit dem folgenden Befehl werden z. B. die konzeptuellen Hilfethemen nach dem Wort "Variable" durchsucht: select-string -pattern variable -path $pshome\*.txt $PSScriptRoot Enthält das Verzeichnis, aus dem das Skriptmodul ausgeführt wird. Diese Variable ermöglicht Skripts den Zugriff auf andere Ressourcen über den Modulpfad. $PsUICulture Enthält den Namen der Benutzeroberflächenkultur, die derzeit für das Betriebssystem festgelegt ist. Die Benutzeroberflächen- kultur bestimmt, welche Textzeichenfolgen für Benutzerober- flächenelemente, z. B. Menüs und Meldungen, verwendet werden. Dies ist der Wert der System.Globalization.CultureInfo.CurrentUICulture.Name-Eigen- schaft des Systems. Rufen Sie das System.Globalization.CultureInfo -Objekt für das System mit dem Cmdlet "Get-UICulture" ab. $PsVersionTable Enthält eine schreibgeschützte Hashtabelle, in der Details zur Windows PowerShell-Version aufgelistet werden, die in der aktuellen Sitzung ausgeführt wird. Die Tabelle enthält die folgenden Elemente: CLRVersion: Die Version der Common Language Runtime (CLR). BuildVersion: Die Buildnummer der aktuellen Version. PSVersion: Die Windows PowerShell-Versionsnummer. WSManStackVersion: Die Versionsnummer des Stapels der WS-Verwaltung. PSCompatibleVersions: Windows PowerShell-Version, die mit der aktuellen Version kompatibel sind. SerializationVersion: Die Version der Serialisierungsmethode. PSRemotingProtocolVersion Die Version des Windows PowerShell- Remoteverwaltungsprotokolls. $Pwd Enthält ein Pfadobjekt, das den vollständigen Pfad des aktuellen Verzeichnisses darstellt. $Sender Enthält das Objekt, von dem dieses Ereignis generiert wurde. Diese Variable wird nur im Action-Block eines Ereignisregis- trierungsbefehls aufgefüllt. Der Wert dieser Variablen kann auch in der Sender-Eigenschaft des von Get-Event zurückgegebenen PSEventArgs-Objekts (System.Management.Automation.PSEventArgs) vorhanden sein. $ShellID Enthält die ID der aktuellen Shell. $SourceArgs Enthält Objekte, die die Ereignisargumente des zu verarbei- tenden Ereignisses darstellen. Diese Variable wird nur im Action-Block eines Ereignisregistrierungsbefehls aufgefüllt. Der Wert dieser Variablen kann auch in der SourceArgs- Eigenschaft des von Get-Event zurückgegebenen PSEventArgs- Objekts (System.Management.Automation.PSEventArgs) vorhanden sein. $$SourceEventArgs Enthält ein Objekt, das das erste Ereignisargument darstellt, das von EventArgs des zu verarbeitenden Ereignisses abgeleitet ist. Diese Variable wird nur im Action-Block eines Ereignis- registrierungsbefehls aufgefüllt. Der Wert dieser Variablen kann auch in der SourceArgs-Eigenschaft des von Get-Event zurückgegebenen PSEventArgs-Objekts (System.Management.Automation.PSEventArgs) vorhanden sein. $This In einem Skriptblock zum Definieren einer Skripteigenschaft oder einer Skriptmethode verweist die Variable "$This" auf das erweiterte Objekt. $True Enthält TRUE. Mithilfe dieser Variablen können Sie TRUE in Befehlen und Skripts darstellen. SIEHE AUCH about_Hash_Tables about_Preference_Variables about_Variables