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