Set-Location
Legt den aktuellen Arbeitsspeicherort auf einen angegebenen Speicherort fest.
Syntax
Set-Location
[[-Path] <String>]
[-PassThru]
[<CommonParameters>]
Set-Location
-LiteralPath <String>
[-PassThru]
[<CommonParameters>]
Set-Location
[-PassThru]
[-StackName <String>]
[<CommonParameters>]
Beschreibung
Das Set-Location
Cmdlet legt den Arbeitsort auf einen angegebenen Speicherort fest. Dieser Speicherort kann ein Verzeichnis, ein Unterverzeichnis, ein Registrierungsspeicherort oder ein beliebiger Anbieterpfad sein.
PowerShell 6.2 hat Unterstützung für -
und +
als Werte für den Path-Parameter hinzugefügt. PowerShell verwaltet einen Verlauf der letzten 20 Speicherorte, auf die zugegriffen werden kann, und -
+
. Diese Liste ist unabhängig vom Speicherortstapel, auf den mithilfe des StackName-Parameters zugegriffen wird.
Beispiele
Beispiel 1: Festlegen der aktuellen Position
PS C:\> Set-Location -Path "HKLM:\"
PS HKLM:\>
Mit diesem Befehl wird der aktuelle Speicherort auf das Stammverzeichnis des HKLM:
Laufwerks festgelegt.
Beispiel 2: Festlegen der aktuellen Position und Anzeigen dieser Position
PS C:\> Set-Location -Path "Env:\" -PassThru
Path
----
Env:\
PS Env:\>
Mit diesem Befehl wird der aktuelle Speicherort auf das Stammverzeichnis des Env:
Laufwerks festgelegt. Er verwendet den PassThru-Parameter , um PowerShell zu leiten, um ein PathInfo-Objekt zurückzugeben, das den Env:\
Speicherort darstellt.
Beispiel 3: Festlegen der Position auf die aktuelle Position im Laufwerk C:
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
Der erste Befehl legt den Speicherort auf den Stamm des HKLM:
Laufwerks im Registrierungsanbieter fest.
Der zweite Befehl legt den Speicherort auf den aktuellen Speicherort des C:
Laufwerks im FileSystem-Anbieter fest.
Wenn der Laufwerkname im Formular <DriveName>:
(ohne umgekehrter Schrägstrich) angegeben wird, legt das Cmdlet den Speicherort auf den aktuellen Speicherort im PSDrive fest.
Um den aktuellen Speicherort im PSDrive-Befehl abzurufen, verwenden Sie Get-Location -PSDrive <DriveName>
den Befehl.
Beispiel 4: Festlegen der aktuellen Position auf einen benannten Stapel
PS C:\> Push-Location -Path 'C:\Program Files\PowerShell\' -StackName "Paths"
PS C:\Program Files\PowerShell\> Set-Location -StackName "Paths"
PS C:\Program Files\PowerShell\> Get-Location -Stack
Path
----
C:\
Der erste Befehl fügt die aktuelle Position zum Pfadstapel hinzu. Mit dem zweiten Befehl wird der Pfadpositionsstapel zum aktuellen Positionsstapel. Der dritte Befehl zeigt die Speicherorte im aktuellen Positionsstapel an.
Die *-Location
Cmdlets verwenden den aktuellen Positionsstapel, es sei denn, ein anderer Positionsstapel wird im Befehl angegeben. Informationen zu Positionsstapeln finden Sie in den Notizen.
Beispiel 5: Navigieren des Standortverlaufs mithilfe von "+" oder "-"
PS C:\> Set-Location -Path $env:SystemRoot
PS C:\Windows> Set-Location -Path Cert:\
PS Cert:\> Set-Location -Path HKLM:\
PS HKLM:\>
# Navigate back through the history using "-"
PS HKLM:\> Set-Location -Path -
PS Cert:\> Set-Location -Path -
PS C:\Windows>
# Navigate using the Set-Location alias "cd" and the implicit positional Path parameter
PS C:\Windows> cd -
PS C:\> cd +
PS C:\Windows> cd +
PS Cert:\>
Die Verwendung des Alias cd -
oder cd +
eine einfache Möglichkeit zum Navigieren in Ihrem Standortverlauf während des Terminals. Weitere Informationen zum Navigieren mit -
/+
diesem Parameter finden Sie unter " Path ".
Parameter
-LiteralPath
Gibt einen Pfad des Speicherorts an. Der Wert des LiteralPath-Parameters wird genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Typ: | String |
Aliase: | PSPath, LP |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-PassThru
Gibt ein PathInfo -Objekt zurück, das die Position darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Path
Geben Sie den Pfad eines neuen Arbeitsspeicherorts an. Wenn kein Pfad angegeben wird, Set-Location
wird standardmäßig das Startverzeichnis des aktuellen Benutzers verwendet. Wenn Wildcards verwendet werden, wählt das Cmdlet den Container (Verzeichnis, Registrierungsschlüssel, Zertifikatspeicher) aus, der dem Wildcardmuster entspricht. Wenn das Wildcardmuster mehreren Containern entspricht, gibt das Cmdlet einen Fehler zurück.
PowerShell behält einen Verlauf der letzten 20 Speicherorte bei, die Sie festgelegt haben. Wenn der Parameterwert "Path " das -
Zeichen ist, ist der neue Arbeitsspeicherort der vorherige Arbeitsspeicherort im Verlauf (sofern vorhanden). Wenn es sich bei dem Wert um das +
Zeichen handelt, ist der neue Arbeitsspeicherort der nächste Arbeitsort im Verlauf (sofern vorhanden). Dies ähnelt der Verwendung Pop-Location
und Push-Location
mit der Ausnahme, dass der Verlauf eine Liste, kein Stapel ist und implizit nachverfolgt und nicht manuell gesteuert wird. Es gibt keine Möglichkeit, die Verlaufsliste anzuzeigen.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | True |
-StackName
Gibt einen vorhandenen Speicherortstapelnamen an, den dieses Cmdlet zum aktuellen Speicherortstapel macht. Geben Sie einen Speicherstapelnamen ein. Um den nicht benannten Standardspeicherortstapel anzugeben, geben Sie $null
eine leere Zeichenfolge (""
) ein.
Die Verwendung dieses Parameters ändert nicht den aktuellen Speicherort. Er ändert nur den von den *-Location
Cmdlets verwendeten Stapel. Die *-Location
Cmdlets wirken auf den aktuellen Stapel, es sei denn, Sie verwenden den StackName-Parameter , um einen anderen Stapel anzugeben. Weitere Informationen zu Positionsstapeln finden Sie in den Notizen.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können eine Zeichenfolge, die einen Pfad, aber keinen Literalpfad enthält, an dieses Cmdlet weiterleiten.
Ausgaben
None
Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.
Wenn Sie den PassThru-Parameter mit Path oder LiteralPath verwenden, gibt dieses Cmdlet ein PathInfo-Objekt zurück, das den neuen Speicherort darstellt.
Wenn Sie den PassThru-Parameter mit StackName verwenden, gibt dieses Cmdlet ein PathInfoStack-Objekt zurück, das den neuen Stapelkontext darstellt.
Hinweise
PowerShell enthält die folgenden Aliase für Set-Location
:
- Alle Plattformen:
cd
chdir
sl
PowerShell unterstützt mehrere Runspaces pro Prozess. Jeder Runspace verfügt über ein eigenes aktuelles Verzeichnis.
Dies ist nicht identisch mit [System.Environment]::CurrentDirectory
. Dieses Verhalten kann ein Problem sein, wenn .NET-APIs aufgerufen oder systemeigene Anwendungen ausgeführt werden, ohne explizite Verzeichnispfade bereitzustellen.
Auch wenn die Speicherort-Cmdlets das prozessweite aktuelle Verzeichnis festgelegt haben, können Sie nicht davon abhängen, da ein anderer Runspace sie jederzeit ändern kann. Sie sollten die Speicherort-Cmdlets verwenden, um pfadbasierte Vorgänge mithilfe des aktuellen Arbeitsverzeichnisses auszuführen, das für den aktuellen Runspace spezifisch ist.
Das Set-Location
Cmdlet wurde entwickelt, um mit den Daten zu arbeiten, die von einem beliebigen Anbieter verfügbar gemacht werden. Geben Sie ein, um die in Ihrer Sitzung verfügbaren Anbieter auflisten zu können Get-PSProvider
. Weitere Informationen finden Sie unter about_Providers.
Ein Stapel ist eine Last-in-First-Out-Liste, in der nur auf das zuletzt hinzugefügte Element zugegriffen werden kann. Sie fügen einem Stapel Elemente in der Reihenfolge hinzu, in der Sie sie verwenden. Anschließend rufen Sie sie zur Verwendung in der umgekehrten Reihenfolge auf. Mit PowerShell können Sie Anbieterspeicherorte in Standortstapeln speichern. PowerShell erstellt einen nicht benannten Standardspeicherortstapel. Sie können mehrere benannte Speicherortstapel erstellen. Wenn Sie keinen Stapelnamen angeben, verwendet PowerShell den aktuellen Speicherortstapel. Standardmäßig ist der nicht benannte Standardspeicherort der aktuelle Speicherortstapel, Sie können jedoch das Set-Location
Cmdlet verwenden, um den aktuellen Speicherortstapel zu ändern.
Verwenden Sie zum Verwalten von Standortstapeln die *-Location
Cmdlets wie folgt:
Verwenden Sie das
Push-Location
Cmdlet, um einem Standortstapel einen Speicherort hinzuzufügen.Verwenden Sie das
Pop-Location
Cmdlet, um einen Speicherort aus einem Standortstapel abzurufen.Um die Speicherorte im aktuellen Positionsstapel anzuzeigen, verwenden Sie den Stack-Parameter des
Get-Location
Cmdlets. Um die Speicherorte in einem benannten Positionsstapel anzuzeigen, verwenden Sie den StackName-Parameter vonGet-Location
.Verwenden Sie zum Erstellen eines neuen Speicherortstapels den StackName-Parameter von
Push-Location
. Wenn Sie einen nicht vorhandenen Stapel angeben,Push-Location
wird der Stapel erstellt.Um einen Positionsstapel zum aktuellen Positionsstapel zu machen, verwenden Sie den StackName-Parameter von
Set-Location
.
Auf den unbenannten Standardspeicherstapel kann nur vollständig zugegriffen werden, wenn es sich dabei um den aktuellen Speicherstapel handelt.
Wenn Sie einen benannten Speicherortstapel zum aktuellen Positionsstapel machen, können Sie die Push-Location
Oder-Cmdlets Pop-Location
nicht mehr verwenden, um Elemente aus dem Standardstapel hinzuzufügen oder abzurufen oder das Get-Location
Cmdlet zum Anzeigen der Speicherorte im nicht benannten Stapel zu verwenden. Um den nicht benannten Stapel zum aktuellen Stapel zu machen, verwenden Sie den StackName-Parameter des Set-Location
Cmdlets mit einem Wert oder $null
einer leeren Zeichenfolge (""
).