Dela via


Set-Location

Anger den aktuella arbetsplatsen till en angiven plats.

Syntax

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

Description

Cmdleten Set-Location anger arbetsplatsen till en angiven plats. Den platsen kan vara en katalog, en underkatalog, en registerplats eller någon providersökväg.

PowerShell 6.2 har lagt till stöd för - och + som värden för parametern Path . PowerShell har en historik över de senaste 20 platserna som kan nås med - och +. Den här listan är oberoende av platsstacken som nås med hjälp av stackName-parametern .

Exempel

Exempel 1: Ange den aktuella platsen

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

Det här kommandot anger den aktuella platsen till enhetens HKLM: rot.

Exempel 2: Ange den aktuella platsen och visa platsen

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

Path
----
Env:\

PS Env:\>

Det här kommandot anger den aktuella platsen till enhetens Env: rot. Den använder parametern PassThru för att dirigera PowerShell till att returnera ett PathInfo-objekt som representerar Env:\ platsen.

Exempel 3: Ange platsen till den aktuella platsen på C:-enheten

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

Det första kommandot anger platsen till roten HKLM: på enheten i registerprovidern. Det andra kommandot anger platsen till den aktuella platsen för C: enheten i FileSystem-providern. När enhetsnamnet anges i formuläret <DriveName>: (utan omvänt snedstreck) anger cmdleten platsen till den aktuella platsen i PSDrive. Så här hämtar du den aktuella platsen i PSDrive-kommandot.Get-Location -PSDrive <DriveName>

Exempel 4: Ange den aktuella platsen till en namngiven stack

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

Det första kommandot lägger till den aktuella platsen i paths-stacken. Det andra kommandot gör platsstacken Sökvägar till den aktuella platsstacken. Det tredje kommandot visar platserna i den aktuella platsstacken.

Cmdletarna *-Location använder den aktuella platsstacken om inte en annan platsstacken anges i kommandot. Information om platsstackar finns i Anteckningar.

Exempel 5: Navigera i platshistoriken med hjälp av "+" eller "-"

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

Använda aliaset, cd - eller cd + är ett enkelt sätt att navigera genom platshistoriken i terminalen. Mer information om hur du navigerar med -/+finns i parametern Sökväg.

Parametrar

-LiteralPath

Anger en sökväg till platsen. Värdet för parametern LiteralPath används exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.

Typ:String
Alias:PSPath, LP
Position:Named
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-PassThru

Returnerar ett PathInfo-objekt som representerar platsen. Som standard genererar den här cmdleten inga utdata.

Typ:SwitchParameter
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Path

Ange sökvägen till en ny arbetsplats. Om ingen sökväg anges Set-Location är standardinställningen för den aktuella användarens hemkatalog. När jokertecken används väljer cmdleten den container (katalog, registernyckel, certifikatarkiv) som matchar jokerteckenmönstret. Om jokerteckenmönstret matchar mer än en container returnerar cmdleten ett fel.

PowerShell har en historik över de senaste 20 platserna som du har angett. Om parametervärdet Sökväg är - tecknet blir den nya arbetsplatsen den tidigare arbetsplatsen i historiken (om den finns). Om värdet är + tecknet blir den nya arbetsplatsen på samma sätt nästa arbetsplats i historiken (om den finns). Detta liknar att använda Pop-Location och Push-Location förutom att historiken är en lista, inte en stack, och är implicit spårad, inte manuellt kontrollerad. Det finns inget sätt att visa historiklistan.

Typ:String
Position:0
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:True

-StackName

Anger ett befintligt platsstackens namn som den här cmdleten gör till den aktuella platsstacken. Ange ett platsstackens namn. Om du vill ange den namnlösa standardplatsstacken skriver du $null eller en tom sträng ("").

Om du använder den här parametern ändras inte den aktuella platsen. Den ändrar bara den stack som används av *-Location cmdletarna. Cmdletarna *-Location fungerar på den aktuella stacken om du inte använder StackName-parametern för att ange en annan stack. Mer information om platsstackar finns i Anteckningar.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

Indata

String

Du kan skicka en sträng som innehåller en sökväg, men inte en literal sökväg, till den här cmdleten.

Utdata

None

Som standard returnerar den här cmdleten inga utdata.

PathInfo

När du använder parametern PassThru med Path eller LiteralPath returnerar den här cmdleten ett PathInfo-objekt som representerar den nya platsen.

PathInfoStack

När du använder parametern PassThru med StackName returnerar den här cmdleten ett PathInfoStack-objekt som representerar den nya stackkontexten.

Kommentarer

PowerShell innehåller följande alias för Set-Location:

  • Alla plattformar:
    • cd
    • chdir
    • sl

PowerShell stöder flera runspaces per process. Varje runspace har en egen aktuell katalog. Detta är inte detsamma som [System.Environment]::CurrentDirectory. Det här beteendet kan vara ett problem när du anropar .NET-API:er eller kör interna program utan att ange explicita katalogsökvägar.

Även om plats-cmdletarna angav den aktuella katalogen för hela processen kan du inte vara beroende av den eftersom en annan runspace kan ändra den när som helst. Du bör använda plats-cmdletarna för att utföra sökvägsbaserade åtgärder med hjälp av den aktuella arbetskatalogen som är specifik för den aktuella körningsytan.

Cmdleten Set-Location är utformad för att fungera med data som exponeras av alla leverantörer. Om du vill visa en lista över tillgängliga leverantörer i sessionen skriver du Get-PSProvider. Mer information finns i about_Providers.

En stack är en lista med de senaste och första ut där endast det senast tillagda objektet kan nås. Du lägger till objekt i en stack i den ordning du använder dem och hämtar dem sedan för användning i omvänd ordning. Med PowerShell kan du lagra providerplatser i platsstackar. PowerShell skapar en namnlös standardplatsstack. Du kan skapa flera namngivna platsstaplar. Om du inte anger ett stacknamn använder PowerShell den aktuella platsstacken. Som standard är den namnlösa standardplatsen den aktuella platsstacken, men du kan använda cmdleten Set-Location för att ändra den aktuella platsstacken.

Om du vill hantera platsstackar använder du *-Location cmdletarna enligt följande:

  • Om du vill lägga till en plats i en platsstacken använder du cmdleten Push-Location .

  • Om du vill hämta en plats från en platsstacken använder du cmdleten Pop-Location .

  • Om du vill visa platserna i den aktuella platsstacken använder du stackparametern för cmdletenGet-Location. Om du vill visa platserna i en namngiven platsstacken använder du stackName-parametern Get-Locationför .

  • Om du vill skapa en ny platsstacken använder du stackName-parametern Push-Locationför . Om du anger en stack som inte finns Push-Location skapar du stacken.

  • Om du vill göra en platsstack till den aktuella platsstacken använder du stackName-parametern Set-Locationför .

Den namnlösa standardplatsstacken är endast helt tillgänglig när det är den aktuella platsstacken. Om du gör en namngiven platsstacken till den aktuella platsstacken kan du inte längre använda Push-Location cmdletarna eller Pop-Location för att lägga till eller hämta objekt från standardstacken eller använda cmdleten Get-Location för att visa platserna i den namnlösa stacken. Om du vill göra den namnlösa stacken till den aktuella stacken använder du stackName-parametern för cmdleten Set-Location med värdet $null eller en tom sträng ("").