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 Arbeitsspeicherort 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 mit - und +zugegriffen werden kann. Diese Liste ist unabhängig von dem Speicherortstapel, auf den mithilfe des StackName-Parameters zugegriffen wird.

Beispiele

Beispiel 1: Festlegen des aktuellen Speicherorts

PS C:\> Set-Location -Path "HKLM:\"
PS HKLM:\>

Mit diesem Befehl wird der aktuelle Speicherort auf den Stamm des HKLM: Laufwerks festgelegt.

Beispiel 2: Festlegen des aktuellen Speicherorts und Anzeigen dieses Standorts

PS C:\> Set-Location -Path "Env:\" -PassThru

Path
----
Env:\

PS Env:\>

Mit diesem Befehl wird der aktuelle Speicherort auf den Stamm des Env: Laufwerks festgelegt. Er verwendet den PassThru-Parameter , um PowerShell anweisen, ein PathInfo-Objekt zurückzugeben, das den Env:\ Speicherort darstellt.

Beispiel 3: Festlegen des Speicherorts auf den aktuellen Speicherort im Laufwerk C:

PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>

Mit dem ersten Befehl wird der Speicherort auf den Stamm des HKLM: Laufwerks im Registrierungsanbieter festgelegt. Mit dem zweiten Befehl wird der Speicherort auf den aktuellen Speicherort des C: Laufwerks im FileSystem-Anbieter festgelegt. Wenn der Laufwerkname im Formular <DriveName>: angegeben wird (ohne umgekehrten Schrägstrich), legt das Cmdlet den Speicherort auf den aktuellen Speicherort im PSDrive fest. Verwenden Get-Location -PSDrive <DriveName> Sie den Befehl, um den aktuellen Speicherort im PSDrive abzurufen.

Beispiel 4: Festlegen des aktuellen Speicherorts 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:\

Mit dem ersten Befehl wird der aktuelle Speicherort dem Pfadstapel hinzugefügt. Mit dem zweiten Befehl wird der Pfadspeicherort zum aktuellen Speicherortstapel. Der dritte Befehl zeigt die Speicherorte im aktuellen Standortstapel an.

Die *-Location Cmdlets verwenden den aktuellen Speicherortstapel, es sei denn, im Befehl wird ein anderer Speicherortstapel angegeben. Informationen zu Standortstapeln finden Sie in den Notizen.

Beispiel 5: Navigieren des Standortverlaufs mit "+" 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 oder cd + ist eine einfache Möglichkeit, cd - im Terminal durch den Standortverlauf zu navigieren. Weitere Informationen zum Navigieren mit -/+finden Sie im Path-Parameter .

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. Einzelne Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Gibt ein PathInfo-Objekt zurück, das den Speicherort darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Geben Sie den Pfad eines neuen Arbeitsstandorts an. Wenn kein Pfad angegeben wird, Set-Location wird standardmäßig das Basisverzeichnis des aktuellen Benutzers verwendet. Bei Verwendung von Feldhaltern wählt das Cmdlet den Container (Verzeichnis, Registrierungsschlüssel, Zertifikatspeicher) aus, der dem Feldhaltermuster entspricht. Wenn das Feldhaltermuster mit mehreren Containern übereinstimmt, gibt das Cmdlet einen Fehler zurück.

PowerShell behält einen Verlauf der letzten 20 Standorte bei, die Sie festgelegt haben. Wenn der Wert des Path-Parameters das - Zeichen ist, ist der neue Arbeitsspeicherort der vorherige Arbeitsspeicherort im Verlauf (sofern vorhanden). Wenn der Wert das + Zeichen ist, ist der neue Arbeitsstandort der nächste Arbeitsstandort im Verlauf (sofern vorhanden). Dies ähnelt der Verwendung von Pop-Location und Push-Location , mit dem Unterschied, dass der Verlauf eine Liste, kein Stapel ist und implizit nachverfolgt wird, nicht manuell gesteuert wird. Es gibt keine Möglichkeit, die Verlaufsliste anzuzeigen.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-StackName

Gibt einen vorhandenen Speicherortstapelnamen an, den dieses Cmdlet zum aktuellen Speicherortstapel macht. Geben Sie einen Speicherstapelnamen ein. Geben Sie zum Angeben des unbenannten Standardspeicherortstapels $null oder eine leere Zeichenfolge ("") ein.

Die Verwendung dieses Parameters ändert den aktuellen Speicherort nicht. Es ä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 Standortstapeln finden Sie in den Notizen.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 PassThru-Parameter mit Path oder LiteralPath verwenden, gibt dieses Cmdlet ein PathInfo-Objekt zurück, das den neuen Speicherort 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 identisch mit [System.Environment]::CurrentDirectory. Dieses Verhalten kann ein Problem sein, wenn .NET-APIs aufgerufen oder native Anwendungen ausgeführt werden, ohne explizite Verzeichnispfade bereitzustellen.

Selbst wenn die Standort-Cmdlets das prozessweite aktuelle Verzeichnis festgelegt haben, können Sie sich nicht darauf verlassen, da es jederzeit von einem anderen Runspace geändert werden kann. Sie sollten die Standort-Cmdlets verwenden, um pfadbasierte Vorgänge unter Verwendung des aktuellen Arbeitsverzeichnisses auszuführen, das für den aktuellen Runspace spezifisch ist.

Das Set-Location Cmdlet ist für die Verwendung von Daten konzipiert, die von einem beliebigen Anbieter verfügbar gemacht werden. Geben Sie ein Get-PSProvider, um die in Ihrer Sitzung verfügbaren Anbieter aufzulisten. 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 Anbieterstandorte in Standortstapeln speichern. PowerShell erstellt einen unbenannten Standardspeicherortstapel. Sie können mehrere benannte Speicherortstapel erstellen. Wenn Sie keinen Stapelnamen angeben, verwendet PowerShell den aktuellen Speicherortstapel. Standardmäßig ist der unbenannte 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:

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

  • Verwenden Sie das Pop-Location Cmdlet, um einen Speicherort aus einem Standortstapel abzurufen.

  • Um die Speicherorte im aktuellen Speicherortstapel anzuzeigen, verwenden Sie den Stack-Parameter des Get-Location Cmdlets. Um die Speicherorte in einem benannten Speicherortstapel 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 Stapel angeben, der nicht vorhanden ist, Push-Location wird der Stapel erstellt.

  • Um einen Standortstapel zum aktuellen Speicherortstapel 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 Speicherortstapel machen, können Sie die Push-Location -Cmdlets oder Pop-Location nicht mehr zum Hinzufügen oder Abrufen von Elementen aus dem Standardstapel verwenden oder das Get-Location Cmdlet verwenden, um die Speicherorte im unbenannten Stapel anzuzeigen. Um den unbenannten Stapel zum aktuellen Stapel zu machen, verwenden Sie den StackName-Parameter des Set-Location Cmdlets mit dem Wert oder $null einer leeren Zeichenfolge ("").