Freigeben über


Set-Location

Legt den aktuellen Arbeitsort auf eine angegebene Position fest.

Syntax

Set-Location
   [[-Path] <String>]
   [-PassThru]
   [<CommonParameters>]
Set-Location
   -LiteralPath <String>
   [-PassThru]
   [<CommonParameters>]
Set-Location
   [-PassThru]
   [-StackName <String>]
   [<CommonParameters>]

Beschreibung

Das Cmdlet Set-Location 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 parameter Path hinzugefügt. PowerShell verwaltet einen Verlauf der letzten 20 Speicherorte, auf die mit - und +zugegriffen werden kann. Diese Liste ist unabhängig vom Positionsstapel, 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 laufwerks HKLM: 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 laufwerks Env: festgelegt. Es 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>: angegeben wird (ohne umgekehrter Schrägstrich), legt das Cmdlet den Speicherort auf den aktuellen Speicherort im PSDrive fest. Verwenden Sie Get-Location -PSDrive <DriveName> Befehl, um den aktuellen Speicherort im PSDrive abzurufen.

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 Hinweise.

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 + ist eine einfache Möglichkeit, in Ihrem Standortverlauf während des Terminals zu navigieren. Weitere Informationen zum Navigieren mit -/+finden Sie im parameter 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 Wildcardzeichen interpretiert. Wenn der Pfad Escapezeichen enthält, schließen Sie ihn in einfache Anführungszeichen ein. 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 generiert dieses Cmdlet keine Ausgabe.

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, wird standardmäßig Set-Location 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 Path Parameterwert das - Zeichen ist, ist der neue Arbeitsspeicherort der vorherige Arbeitsort im Verlauf (sofern vorhanden). Wenn der Wert das + Zeichen ist, dann ist der neue Arbeitsspeicherort der nächste Arbeitsort im Verlauf (sofern vorhanden). Dies ähnelt der Verwendung von 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 Speicherortstapelnamen ein. Um den nicht benannten Standardspeicherortstapel anzugeben, geben Sie $null oder eine leere Zeichenfolge ("") ein.

Die Verwendung dieses Parameters ändert nicht den aktuellen Speicherort. Er ändert nur den stapel, der von den *-Location Cmdlets verwendet wird. 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 Notes.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

Eingaben

String

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.

PathInfo

Wenn Sie den parameter PassThru mit Path oder LiteralPath-verwenden, gibt dieses Cmdlet ein PathInfo- objekt zurück, das die neue Position darstellt.

PathInfoStack

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 mit [System.Environment]::CurrentDirectoryidentisch. 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 Cmdlet Set-Location ist für die Arbeit mit den Daten konzipiert, die von einem beliebigen Anbieter verfügbar gemacht werden. Geben Sie Get-PSProviderein, um die in Ihrer Sitzung verfügbaren Anbieter auflisten zu können. 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, und rufen sie dann für die Verwendung in umgekehrter Reihenfolge ab. 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 Cmdlet Set-Location verwenden, um den aktuellen Speicherortstapel zu ändern.

Verwenden Sie zum Verwalten von Positionsstapeln die *-Location Cmdlets wie folgt:

  • Verwenden Sie das Cmdlet Push-Location, um einem Standortstapel einen Speicherort hinzuzufügen.

  • Um einen Speicherort aus einem Standortstapel abzurufen, verwenden Sie das cmdlet Pop-Location.

  • Um die Speicherorte im aktuellen Positionsstapel anzuzeigen, verwenden Sie den Stack-Parameter des cmdlets Get-Location. Um die Speicherorte in einem benannten Positionsstapel anzuzeigen, verwenden Sie den StackName Parameter von Get-Location.

  • Verwenden Sie zum Erstellen eines neuen Speicherortstapels den StackName Parameter von Push-Location. Wenn Sie einen nicht vorhandenen Stapel angeben, erstellt Push-Location den Stapel.

  • Um einen Positionsstapel zum aktuellen Positionsstapel zu machen, verwenden Sie den StackName Parameter von Set-Location.

Auf den nicht benannten Standardspeicherortstapel kann nur zugegriffen werden, wenn es sich um den aktuellen Speicherortstapel handelt. Wenn Sie einen benannten Speicherortstapel zum aktuellen Speicherortstapel machen, können Sie die Push-Location oder Pop-Location Cmdlets nicht mehr verwenden, um Elemente aus dem Standardstapel hinzuzufügen oder abzurufen, oder verwenden Sie das Cmdlet Get-Location, um die Speicherorte im nicht benannten Stapel anzuzeigen. Um den nicht benannten Stapel zum aktuellen Stapel zu machen, verwenden Sie den StackName Parameter des cmdlets Set-Location mit dem Wert $null oder einer leeren Zeichenfolge ("").