Set-Location

將目前的工作位置設定為指定的位置。

Syntax

Set-Location
   [[-Path] <String>]
   [-PassThru]
   [-UseTransaction]
   [<CommonParameters>]
Set-Location
   -LiteralPath <String>
   [-PassThru]
   [-UseTransaction]
   [<CommonParameters>]
Set-Location
   [-PassThru]
   [-StackName <String>]
   [-UseTransaction]
   [<CommonParameters>]

Description

Cmdlet 會將 Set-Location 工作位置設定為指定的位置。 該位置可以是目錄、子目錄、登錄位置或任何提供者路徑。

您也可以使用 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 會使用目前的位置堆疊。 如需位置堆疊的相關信息,請參閱 附註

參數

-LiteralPath

指定位置的路徑。 LiteralPath 參數的值會與類型完全相同使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。

Type:String
Aliases:PSPath
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 會傳回錯誤。

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

-UseTransaction

在作用中交易中包含 命令。 只有在交易進行中時,此參數才有效。 如需詳細資訊,請參閱 about_Transactions

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

String

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

輸出

None

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

PathInfo

當您搭配 Path 或 LiteralPath 使用 PassThru 參數時,這個 Cmdlet 會傳回代表新位置的 PathInfo 物件。

PathInfoStack

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

備註

Windows 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-LocationStackName 參數。

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

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

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