Push-Location

將目前的位置新增至位置堆疊頂端。

Syntax

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

Description

Cmdlet 會將 Push-Location 目前位置新增 (“pushes”) 新增至位置堆棧。 如果您指定路徑, Push-Location 請將目前位置推送至位置堆疊,然後將目前位置變更為路徑所指定的位置。 您可以使用 Pop-Location Cmdlet 從位置堆疊取得位置。

根據預設,Cmdlet 會將 Push-Location 目前位置推送至目前的位置堆棧,但您可以使用 StackName 參數來指定替代位置堆棧。 如果堆疊不存在, Push-Location 請加以建立。

如需位置堆疊的詳細資訊,請參閱 附註

範例

範例 1

此範例會將目前的位置推送至預設位置堆疊,然後將位置變更為 C:\Windows

PS C:\> Push-Location C:\Windows

範例 2

本範例會將目前位置推送至 RegFunction 堆疊,並將目前位置變更為 HKLM:\Software\Policies 位置。

PS C:\> Push-Location HKLM:\Software\Policies -StackName RegFunction

您可以在任何 PowerShell 磁碟驅動器 (PSDrive) 中使用 Location Cmdlet。

範例 3

此命令會將目前的位置推送至預設堆疊。 它不會變更位置。

PS C:\> Push-Location

範例 4 - 建立和使用具名堆疊

這些命令示範如何建立及使用具名位置堆疊。

PS C:\> Push-Location ~ -StackName Stack2
PS C:\Users\User01> Pop-Location -StackName Stack2
PS C:\>

第一個命令會將目前位置推送至名為 Stack2 的新堆疊,然後將目前位置變更為主目錄,以 tilde 符號 (~) 在命令中表示,這在 FileSystem 提供者磁碟驅動器上使用時相當於 $HOME

如果會話中還沒有 Stack2, Push-Location 請建立它。 第二個命令會 Pop-Location 使用 Cmdlet 從 Stack2 堆棧快顯原始位置 (C:\)。 如果沒有 StackName 參數,Pop-Location則會從未命名的預設堆疊中快顯位置。

如需位置堆疊的詳細資訊,請參閱 附註

參數

-LiteralPath

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

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

-PassThru

傳遞物件,此物件代表位置至管線。 根據預設,此 Cmdlet 不會產生任何輸出。

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

-Path

將位置變更為這個路徑所指定的位置之後,它會將目前位置新增(推送)到堆棧頂端。 輸入提供者支援此 Cmdlet 之任何位置的路徑。 允許通配符。 參數名稱是選擇性的。

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

-StackName

指定新增目前位置的位置堆疊。 輸入位置堆疊名稱。 如果堆疊不存在, Push-Location 請加以建立。

如果沒有此參數, Push-Location 請將位置新增至目前的位置堆疊。 根據預設,目前的位置堆疊是PowerShell所建立的未命名預設位置堆疊。 若要將位置堆疊設為目前的位置堆疊,請使用 Cmdlet 的 Set-Location StackName 參數。 如需位置堆疊的詳細資訊,請參閱 附註

注意

Push-Location 無法將位置新增至未命名的預設堆疊,除非它是目前的位置堆棧。

Type:String
Position:Named
Default value:Default stack
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

當您使用 PassThru 參數時,這個 Cmdlet 會 傳回 PathInfo 物件,代表 Cmdlet 作業之後的目前路徑。

備註

Windows PowerShell 包含下列的 Push-Location別名:

  • pushd

PowerShell 支援每個進程的多個 Runspace。 每個 Runspace 都有自己的 目前目錄。 這與不同 [System.Environment]::CurrentDirectory。 呼叫 .NET API 或執行原生應用程式時,若未提供明確的目錄路徑,則此行為可能會發生問題。

即使位置 Cmdlet 已設定全進程目前的目錄,您也無法依賴它,因為其他 Runspace 可能會隨時變更它。 您應該使用位置 Cmdlet,使用目前 Runspace 特有的目前工作目錄來執行路徑型作業。

堆疊是最後一個先出清單,其中只能存取最近新增的專案。 您可以依您使用項目的順序,將專案新增至堆疊,然後擷取這些專案以反向順序使用。 PowerShell 可讓您將提供者位置儲存在位置堆疊中。

PowerShell 會建立未命名的預設位置堆疊,而且您可以建立多個具名位置堆疊。 如果您未指定堆疊名稱,PowerShell 會使用目前的位置堆疊。 根據預設,未命名的預設位置是目前的位置堆疊,但您可以使用 Set-Location Cmdlet 來變更目前的位置堆疊。

若要管理位置堆棧,請使用PowerShell位置 Cmdlet,如下所示。

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

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

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

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

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

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

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

您也可以Push-Location參考其內建別名 。 pushd 如需詳細資訊,請參閱 about_Aliases

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