Set-Location
將目前的工作位置設定為指定的位置。
Syntax
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堆疊。 第二個命令會讓路徑位置堆疊成為目前的位置堆疊。 第三個命令會顯示目前位置堆疊中的位置。
除非命令中指定不同的位置堆疊,否則 *-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不要將任何字元解譯為逸出序列。
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PassThru
會傳回代表位置的 PathInfo 物件。 根據預設,此 Cmdlet 不會產生任何輸出。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定新工作位置的路徑。 如果未提供路徑, Set-Location
預設為目前使用者的主目錄。 使用通配符時,Cmdlet 會選擇符合通配符模式的容器 (目錄、登錄機碼、證書存儲) 。 如果通配符模式符合多個容器,Cmdlet 會傳回錯誤。
PowerShell 會保留您設定的最後 20 個位置歷程記錄。 如果 Path 參數值是 -
字元,則新的工作位置將會是歷程記錄中先前的工作位置,如果存在) 則為 (。 同樣地,如果值為 +
字元,則新的工作位置將會是歷程記錄中的下一個工作位置, (如果存在) 。 這與使用 Pop-Location
和 Push-Location
類似,不同之處在於歷程記錄是清單,而不是堆棧,而且會隱含地追蹤,而不是手動控制。 無法檢視歷程記錄清單。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-StackName
指定這個 Cmdlet 建立目前位置堆疊的現有位置堆疊名稱。 請輸入位置堆疊名稱。 若要指出未命名的預設位置堆疊,請輸入 $null
或空字串 (""
) 。
使用此參數並不會變更目前的位置。 它只會變更 Cmdlet 所使用的 *-Location
堆疊。 除非您使用 StackName 參數來指定不同的堆疊,否則 Cmdlet *-Location
會作用於目前的堆疊。 如需位置堆疊的詳細資訊,請參閱 附註。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
輸入
您可以使用管線將包含路徑 (但不是常值路徑) 的字串傳送至此 Cmdlet。
輸出
None, System.Management.Automation.PathInfo, System.Management.Automation.PathInfoStack
除非您指定 PassThru 參數,否則此 Cmdlet 不會產生任何輸出。 搭配 Path 或 LiteralPath 使用 PassThru 會產生代表新位置的 PathInfo 物件。 搭配 StackName 使用 PassThru 會產生代表新堆棧內容的 PathInfoStack 物件。
備註
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
或空字串 (""
) 。