Freigeben über


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 vom Speicherortstapel, auf den mithilfe des StackName-Parameters zugegriffen wird.

Beispiele

Beispiel 1: Festlegen des aktuellen Speicherorts

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

Dieser Befehl legt den aktuellen Speicherort auf den Stamm des HKLM: Laufwerks fest.

Beispiel 2: Festlegen des aktuellen Speicherorts und Anzeigen dieses Standorts

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

Path
----
Env:\

PS Env:\>

Dieser Befehl legt den aktuellen Speicherort auf den Stamm des Env: Laufwerks fest. Es verwendet den PassThru-Parameter , um PowerShell anzuordnen, ein PathInfo-Objekt zurückzugeben, das den Env:\ Speicherort darstellt.

Beispiel 3: Festlegen des aktuellen Speicherorts auf 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 Laufwerksname im Formular <DriveName>: angegeben ist (ohne umgekehrten Schrägstrich), legt das Cmdlet den Speicherort auf den aktuellen Speicherort im PSDrive fest. Verwenden Sie Get-Location -PSDrive <DriveName> zum Abrufen des aktuellen Speicherorts im PSDrive-Befehl.

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:\

Der erste Befehl fügt den aktuellen Speicherort dem Pfadstapel hinzu. Mit dem zweiten Befehl wird der Pfadspeicherortstapel 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 ist 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, durch Ihren Standortverlauf zu navigieren, cd - während Sie sich in Ihrem Terminal befinden. 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. Einfache 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 Arbeitsspeicherorts an. Wenn kein Pfad angegeben wird, Set-Location wird standardmäßig das Basisverzeichnis des aktuellen Benutzers verwendet. Wenn Wildcards verwendet werden, wählt das Cmdlet den ersten Pfad aus, der dem Wildcardmuster entspricht.

PowerShell speichert einen Verlauf der letzten 20 Speicherorte, die Sie festgelegt haben. Wenn der Path-Parameterwert das - Zeichen ist, ist der neue Arbeitsspeicherort der vorherige Arbeitsspeicherort im Verlauf (sofern vorhanden). Wenn der Wert das + Zeichen ist, ist der neue Arbeitsspeicherort der nächste Arbeitsspeicherort im Verlauf (sofern vorhanden). Dies ähnelt der Verwendung von Pop-Location und Push-Location , mit der Ausnahme, dass der Verlauf eine Liste und kein Stapel ist und implizit nachverfolgt und nicht manuell gesteuert wird. Derzeit gibt es 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 den Namen des vorhandenen Speicherortstapels an, den dieses Cmdlet als aktuellen Speicherortstapel erstellt. Geben Sie einen Speicherstapelnamen ein. Um den unbenannten Standardspeicherortstapel anzugeben, geben Sie $null oder eine leere Zeichenfolge ("") ein.

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

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 übergeben.

Ausgaben

None, System.Management.Automation.PathInfo, System.Management.Automation.PathInfoStack

Dieses Cmdlet generiert keine Ausgabe, es sei denn, Sie geben den PassThru-Parameter an. Wenn Sie PassThru mit Path oder LiteralPath verwenden, wird ein PathInfo-Objekt generiert, das den neuen Speicherort darstellt. Wenn Sie PassThru mit StackName verwenden, wird ein PathInfoStack-Objekt generiert, das den neuen Stapelkontext darstellt.

Hinweise

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 von einem anderen Runspace jederzeit geändert werden kann. Sie sollten die Standort-Cmdlets verwenden, um pfadbasierte Vorgänge mit dem aktuellen Arbeitsverzeichnis auszuführen, das für den aktuellen Runspace spezifisch ist.

Das Set-Location Cmdlet ist für die Arbeit mit den Daten konzipiert, die von einem beliebigen Anbieter verfügbar gemacht werden. Um die in Ihrer Sitzung verfügbaren Anbieter aufzulisten, geben Sie ein 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 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:

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

  • Verwenden Sie den Stack-Parameter des Get-Location Cmdlets, um die Speicherorte im aktuellen Standortstapel anzuzeigen. Verwenden Sie zum Anzeigen der Speicherorte in einem benannten Speicherortstapel 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 erstellt den Stapel.

  • Verwenden Sie den StackName-ParameterSet-Locationvon , um einen Standortstapel zum aktuellen Speicherortstapel zu machen.

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 $null oder einer leeren Zeichenfolge ("").