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
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.
När du använder parametern PassThru med Path eller LiteralPath returnerar den här cmdleten ett PathInfo-objekt som representerar den nya platsen.
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 cmdleten
Get-Location
. Om du vill visa platserna i en namngiven platsstacken använder du stackName-parameternGet-Location
för .Om du vill skapa en ny platsstacken använder du stackName-parametern
Push-Location
för . Om du anger en stack som inte finnsPush-Location
skapar du stacken.Om du vill göra en platsstack till den aktuella platsstacken använder du stackName-parametern
Set-Location
fö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 (""
).