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 Cmdlet 會將工作位置設定為指定的位置。 該位置可以是目錄、子目錄、登錄位置或任何提供者路徑。
PowerShell 6.2 新增了對 - 和 + 的支援,做為 Path 參數的值。 PowerShell 會維護過去 20 個可透過 - 和 +存取之位置的歷程記錄。 此清單與使用 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:\ 物件。
範例 3:將位置設定為 C: 磁碟驅動器中的目前位置
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
第一個命令會將位置設定為登錄提供者中 HKLM: 磁碟驅動器的根目錄。
第二個命令會將位置設定為 FileSystem 提供者中 C: 磁碟驅動器的目前位置。
當磁碟驅動器名稱以 <DriveName>: 格式指定時(不含反斜杠),Cmdlet 會將位置設定為 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:\
第一個命令會將目前的位置新增至Path堆疊。 第二個命令會讓Path位置堆疊成為目前的位置堆疊。 第三個命令會顯示目前位置堆疊中的位置。
除非命令中指定不同的位置堆疊,否則 *-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 + 是一種在終端機中流覽位置歷程記錄的簡單方式。 如需使用 -/+巡覽的詳細資訊,請參閱 Path 參數。
參數
-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 預設為目前使用者的主目錄。 使用通配符時,Cmdlet 會選擇符合通配符模式的容器(目錄、登錄機碼、證書存儲)。 如果通配符模式符合多個容器,Cmdlet 會傳回錯誤。
PowerShell 會保留您設定的最後 20 個位置歷程記錄。 如果 Path 參數值是 - 字元,則新的工作位置將會是歷程記錄中先前的工作位置(如果有的話)。 同樣地,如果值是 + 字元,則新的工作位置將會是歷程記錄中的下一個工作位置(如果有的話)。 這類似於使用 Pop-Location 和 Push-Location,不同之處在於歷程記錄是清單,而不是堆棧,而且會隱含追蹤,而不是手動控制。 無法檢視歷程記錄清單。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
Path
| Position: | 0 |
| 必要: | False |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-StackName
指定這個 Cmdlet 建立目前位置堆疊的現有位置堆疊名稱。 輸入位置堆疊名稱。 若要指出未命名的預設位置堆疊,請輸入 $null 或空字串 ("")。
使用此參數並不會變更目前的位置。 它只會變更 *-Location Cmdlet 所使用的堆疊。 除非您使用 *-Location 參數來指定不同的堆疊,否則 Cmdlet 會作用於目前的堆疊。 如需位置堆疊的詳細資訊,請參閱 Notes。
參數屬性
| 類型: | 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
當您搭配 Path 或 LiteralPath使用 PassThru 參數時,此 Cmdlet 會傳回代表新位置的 PathInfo 物件。
PathInfoStack
當您搭配 StackName使用 PassThru 參數時,此 Cmdlet 會傳回代表新堆棧內容的 PathInfoStack 物件。
備註
PowerShell 包含下列 Set-Location的別名:
- 所有平臺:
cdchdirsl
PowerShell 支援每個程序的多個 Runspace。 每個運行空間都有自己的 目前目錄。
這與 [System.Environment]::CurrentDirectory不同。 呼叫 .NET API 或執行原生應用程式時,若未提供明確的目錄路徑,則此行為可能會發生問題。
即使位置 Cmdlet 已設定全進程目前的目錄,您也無法依賴它,因為其他 Runspace 可能會隨時變更它。 您應該使用位置 Cmdlet,使用目前 Runspace 特有的目前工作目錄來執行路徑型作業。
Set-Location Cmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers。
堆疊是最後一個先出清單,其中只能存取最近新增的專案。 您可以依您使用項目的順序,將專案新增至堆疊,然後擷取這些專案以反向順序使用。 PowerShell 可讓您將提供者位置儲存在位置堆疊中。 PowerShell 會建立未命名的預設位置堆疊。 您可以建立多個具名位置堆疊。 如果您未指定堆疊名稱,PowerShell 會使用目前的位置堆疊。 根據預設,未命名的預設位置是目前的位置堆疊,但您可以使用 Set-Location Cmdlet 來變更目前的位置堆疊。
若要管理位置堆疊,請使用 *-Location Cmdlet,如下所示:
若要將位置新增至位置堆疊,請使用
Push-LocationCmdlet。若要從位置堆疊取得位置,請使用
Pop-LocationCmdlet。若要顯示目前位置堆疊中的位置,請使用 Cmdlet 的
Get-Location參數。 若要在具名位置堆疊中顯示位置,請使用 的Get-Location參數。若要建立新的位置堆疊,請使用 的
Push-Location參數。 如果您指定不存在的堆疊,Push-Location會建立堆疊。若要將位置堆疊設為目前的位置堆疊,請使用 的
Set-Location參數。
只有目前的位置堆疊是目前的位置堆疊時,才能完全存取未命名的預設位置堆疊。
如果您將具名位置堆疊設為目前的位置堆疊,就無法再使用 Push-Location 或 Pop-Location Cmdlet 從預設堆疊新增或取得專案,或使用 Get-Location Cmdlet 來顯示未命名堆疊中的位置。 若要將未命名的堆疊設為目前的堆疊,請使用 Cmdlet 的 Set-Location 參數,其值為 $null 或空字串 ("")。