Set-Location

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

語法

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

Description

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

您也可以使用 StackName 參數,將具名位置堆棧設為目前的位置堆疊。 如需位置堆疊的詳細資訊,請參閱附註。

範例

範例 1:設定目前的位置

PowerShell
PS C:\> Set-Location -Path "HKLM:\"
PS HKLM:\>

此命令會將目前位置設定為 HKLM: 磁碟驅動器的根目錄。

範例 2:設定目前的位置並顯示該位置

PowerShell
PS C:\> Set-Location -Path "Env:\" -PassThru

Path
----
Env:\

PS Env:\>

此命令會將目前位置設定為 Env: 磁碟驅動器的根目錄。 它會使用 PassThru 參數來指示 PowerShell 傳回代表 Env:\ 位置的 PathInfo 物件。

範例 3:將位置設定為 C: 磁碟驅動器中的目前位置

PowerShell
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:將目前位置設定為具名堆疊

PowerShell
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不要將任何字元解譯為逸出序列。

類型:String
別名:PSPath
Position:Named
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-PassThru

會傳回代表位置的 PathInfo 物件。 根據預設,此 Cmdlet 不會產生任何輸出。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Path

指定新工作位置的路徑。 如果未提供路徑,Set-Location 預設為目前使用者的主目錄。 使用通配符時,Cmdlet 會選擇符合通配符模式的容器(目錄、登錄機碼、證書存儲)。 如果通配符模式符合多個容器,Cmdlet 會傳回錯誤。

類型:String
Position:0
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:True

-StackName

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

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

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-UseTransaction

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

類型:SwitchParameter
別名:usetx
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

String

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

輸出

None

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

PathInfo

當您搭配 PathLiteralPath使用 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 特有的目前工作目錄來執行路徑型作業。

Set-Location Cmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers

堆疊是最後一個先出清單,其中只能存取最近新增的專案。 您可以依您使用項目的順序,將專案新增至堆疊,然後擷取這些專案以反向順序使用。 PowerShell 可讓您將提供者位置儲存在位置堆疊中。 PowerShell 會建立未命名的預設位置堆疊。 您可以建立多個具名位置堆疊。 如果您未指定堆疊名稱,PowerShell 會使用目前的位置堆疊。 根據預設,未命名的預設位置是目前的位置堆疊,但您可以使用 Set-Location Cmdlet 來變更目前的位置堆疊。

若要管理位置堆疊,請使用 *-Location Cmdlet,如下所示:

  • 若要將位置新增至位置堆疊,請使用 Push-Location Cmdlet。

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

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

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

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

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