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的別名:
- 所有平臺:
cdchdirsl
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-Locationcmdlet。要從位置堆疊取得位置,請使用
Pop-Locationcmdlet。要顯示目前位置堆疊中的位置,請使用 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 或空字串("")。