Set-Location

將目前的工作位置設定為指定位置。

語法

Path (預設值)

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

LiteralPath

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

Stack

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

Description

指令檔會 Set-Location 將工作位置設定為指定位置。 該位置可以是目錄、子目錄、登錄檔位置,或任何提供者路徑。

PowerShell 6.2 新增了對 - 和 + 作為 路徑 參數值的支援。 PowerShell 會維護過去 20 個可用 and 存取-+的位置歷史。 此清單獨立於使用 StackName 參數存取的位置堆疊。

範例

範例 1:設定目前位置

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

此指令將當前位置設定為磁碟機的 HKLM: 根節點。

範例 2:設定目前位置並顯示該位置

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

PS Env:\>

此指令將當前位置設定為磁碟機的 Env: 根節點。 它使用 PassThru 參數來指示 PowerShell 回傳一個代表該位置的 Env:\PathInfo 物件。

範例 3:將位置設為 C: 磁碟的當前位置

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

第一個指令會將位置設定為登錄檔提供者中磁碟的根 HKLM: 節點。 第二個指令將位置設定為磁碟在 FileSystem 提供者中目前的位置 C: 。 當磁碟機名稱以 格式 <DriveName>: (無斜線)指定時,指令檔會將位置設定為 PSDrive 中的當前位置。 要在 PSDrive 裡取得目前位置,請使用 Get-Location -PSDrive <DriveName> 指令。

範例 4:將目前位置設為命名堆疊

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

第一個指令會將目前位置加入路徑堆疊。 第二個指令會讓 Paths 的位置堆疊變成目前的位置堆疊。 第三個指令顯示目前位置堆疊中的位置。

除非指令中指定不同的位置堆疊,否則 *-Location cmdlet 會使用目前的位置堆疊。 關於位置堆疊的資訊,請參閱 備註。

範例 5:使用 '+' 或 '-' 來瀏覽位置歷史

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

使用別名 cd -cd + 或是在終端機中瀏覽位置歷史的簡單方法。 欲了解更多使用 -/+,請參見 路徑 參數。

參數

-LiteralPath

指定該地點的路徑。 LiteralPath 參數的值會完全按照其型別方式使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False
別名:PSPath, LP

參數集

LiteralPath
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-PassThru

回傳一個 PathInfo 物件,代表該位置。 根據預設,此 Cmdlet 不會產生任何輸出。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Path

指定新工作地點的路徑。 若未提供路徑,則 Set-Location 預設為當前使用者的首頁目錄。 當使用萬用字元時,指令長會選擇與萬用字元模式相符的容器(目錄、登錄鍵、憑證儲存庫)。 若通配字模式匹配多個容器,指令長會回傳錯誤。

PowerShell 會保留你最近設定的 20 個位置的歷史紀錄。 如果 Path 參數值是 - 字元,那麼新的工作位置將是歷史中先前的工作位置(如果存在的話)。 同理,如果值是 + 字元,那麼新的工作地點將是歷史上的下一個工作地點(如果存在的話)。 這和使用Pop-LocationPush-Location和類似,但歷史是清單而非堆疊,且是隱含追蹤,而非手動控制。 無法查看歷史清單。

參數屬性

類型:String
預設值:None
支援萬用字元:True
不要顯示:False

參數集

Path
Position:0
必要:False
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-StackName

指定一個現有的位置堆疊名稱,該指令子讓它成為目前的位置堆疊。 輸入一個位置堆疊名稱。 若要表示未命名的預設位置堆疊,請以空字串("")型別$null或

使用此參數不會改變目前的位置。 它只會改變指令執行器使用的 *-Location 堆疊。 除非你用 StackName 參數指定不同的堆疊,否則 *-Location cmdlets 會作用在目前的堆疊上。 欲了解更多地點堆疊資訊,請參閱 備註。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Stack
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

CommonParameters

此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。

輸入

String

您可以使用管道將包含路徑但不是常值路徑的字串傳送至此 cmdlet。

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

PathInfo

當你使用 PassThru 參數搭配 Path 或 LiteralPath 時,這個 cmdlet 會回傳一個代表新位置的 PathInfo 物件。

PathInfoStack

當你使用 PassThru 參數搭配 StackName 時,這個 cmdlet 會回傳一個代表新堆疊上下文的 PathInfoStack 物件。

備註

PowerShell 包含下列 Set-Location的別名:

  • 所有平臺:
    • cd
    • chdir
    • sl

PowerShell 支援每個程序的多個 Runspace。 每個運行空間都有自己的 目前目錄。 這與 不同。[System.Environment]::CurrentDirectory 當呼叫 .NET API 或執行原生應用程式但未提供明確目錄路徑時,可能會有此問題。

即使 location cmdlets 設定了整個程序的當前目錄,你也不能依賴它,因為其他跑道空間隨時可能改變它。 你應該使用 location cmdlets 來執行目前執行空間特定工作目錄的路徑操作。

Set-Location Cmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers。

堆疊是一種後進先出的清單,只有最近新增的項目才能存取。 你依照使用順序將物品加入堆疊,然後反向取回使用。 PowerShell 讓你能將提供者位置儲存在位置堆疊中。 PowerShell 會建立一個未命名的預設位置堆疊。 你可以建立多個命名的地點堆疊。 如果你沒有指定堆疊名稱,PowerShell 會使用目前的地點堆疊。 預設情況下,未命名的預設位置是目前的位置堆疊,但你可以用 Set-Location cmdlet 來更改目前的位置堆疊。

管理位置堆疊時,請使用 *-Location 指令碼(cmdlet),如下:

  • 要將位置加入位置堆疊,請使用 Push-Location cmdlet。

  • 要從位置堆疊取得位置,請使用 Pop-Location cmdlet。

  • 要顯示目前位置堆疊中的位置,請使用 cmdlet 的 Get-LocationStack 參數。 要顯示命名位置堆疊中的位置,請使用 StackName 參數。Get-Location

  • 要建立新的位置堆疊,請使用 StackName 參數。Push-Location 如果你指定一個不存在的堆疊,則 Push-Location 會建立該堆疊。

  • 要讓位置堆疊成為目前的位置堆疊,請使用 StackName 參數。Set-Location

未命名的預設位置堆疊只有在是目前位置堆疊時才會被完全存取。 如果你把命名地點堆疊設為目前的位置堆疊,你就不能再用 Push-Location or Pop-Location 指令匣子來新增或取得預設堆疊中的物品,也不能用 Get-Location cmdlet 顯示非命名堆疊裡的位置。 若要讓未命名堆疊成為目前的堆疊,請使用指令本的 Set-LocationStackName 參數,值為 $null 或空字串("")。