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

第一個命令會將目前的位置新增至 [路徑] 堆疊。 第二個命令會讓路徑位置堆疊成為目前的位置堆疊。 第三個命令會顯示目前位置堆疊中的位置。

除非命令中指定了不同的位置堆疊,否則 *-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-LocationPush-Location ,不同之處在於歷程記錄是清單,而不是堆棧,而且會隱含追蹤,而不是手動控制。 無法檢視記錄清單。

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-StackName

指定此 Cmdlet 建立目前位置堆疊的現有位置堆疊名稱。 請輸入位置堆疊名稱。 若要指出未命名的預設位置堆疊,請輸入 $null 或空字串 ("") 。

使用此參數並不會變更目前的位置。 它只會變更 Cmdlet 所使用的 *-Location 堆疊。 除非您 *-Location 使用 StackName 參數來指定不同的堆疊,否則 Cmdlet 會在目前的堆疊上運作。 如需位置堆疊的詳細資訊,請參閱 附註

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

輸入

String

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

輸出

None

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

PathInfo

當您搭配 PathLiteralPath 使用 PassThru 參數時,此 Cmdlet 會傳回代表新位置的 PathInfo 物件。

PathInfoStack

當您搭配 StackName 使用 PassThru 參數時,此 Cmdlet 會傳回代表新堆棧內容的 PathInfoStack 物件。

備註

PowerShell 包含的下列別名 Set-Location

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

PowerShell 支援每個進程的多個 Runspace。 每個 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-Location Cmdlet。

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

  • 若要顯示目前位置堆疊中的位置,請使用 Cmdlet 的 Get-LocationStack 參數。 若要在具名位置堆疊中顯示位置,請使用 的 Get-LocationStackName 參數。

  • 若要建立新的位置堆疊,請使用 的 Push-LocationStackName 參數。 如果您指定不存在的堆疊, Push-Location 請建立堆疊。

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

未命名的預設位置堆疊只有在做為目前的位置堆疊時,才能供完整存取。 如果您將具名位置堆疊設為目前的位置堆疊,就無法再使用 Push-LocationPop-Location Cmdlet 從預設堆疊新增或取得專案,或使用 Get-Location Cmdlet 在未命名的堆疊中顯示位置。 若要讓未命名的堆疊成為目前的堆疊,請使用 Cmdlet 的 Set-LocationStackName 參數,其值為 $null 或空字串 ("") 。