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
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 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 vonGet-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 (""
).