Push-Location

将当前位置添加到位置堆栈的顶部。

语法

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

说明

cmdlet 将 Push-Location 当前位置 ) (“pushes”添加到位置堆栈上。 如果指定路径, Push-Location 则将当前位置推送到位置堆栈,然后将当前位置更改为路径指定的位置。 可以使用 Pop-Location cmdlet 从位置堆栈获取位置。

默认情况下, Push-Location cmdlet 将当前位置推送到当前位置堆栈,但你可以使用 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 驱动器中使用位置 cmdlet (PSDrive) 。

示例 3

此命令将当前位置推入到默认堆栈中。 它不会更改位置。

PS C:\> Push-Location

示例 4 - Create并使用命名堆栈

这些命令展示了如何创建和使用已命名的位置堆栈。

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

第一个命令将当前位置推送到名为 Stack2 的新堆栈上,然后将当前位置更改为主目录,该目录在命令中由平铺符号 (~) 表示,在 FileSystem 提供程序驱动器上使用时,该符号等效于 $HOME

如果会话中尚不存在 Stack2, Push-Location 请创建它。 第二个命令使用 Pop-Location cmdlet 从 Stack2 堆栈弹出原始位置 (C:\) 。 如果没有 StackName 参数, Pop-Location 则会从未命名的默认堆栈弹出位置。

有关位置堆栈的详细信息,请参阅 说明

参数

-LiteralPath

指定新位置的路径。 与 Path参数不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

Type:String
Aliases:PSPath, LP
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-LocationStackName 参数。 有关位置堆栈的详细信息,请参阅 说明

注意

Push-Location 无法向未命名的默认堆栈添加位置,除非它是当前位置堆栈。

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

输入

String

可以通过管道将包含路径 (但不包含文本路径的字符串) 到此 cmdlet。

输出

None

默认情况下,此 cmdlet 不返回任何输出。

PathInfo

使用 PassThru 参数时,此 cmdlet 返回 一个 PathInfo 对象,该对象表示 cmdlet 操作后的当前路径。

备注

PowerShell 包含以下别名 Push-Location

  • 所有平台:
    • pushd

PowerShell 支持每个进程多个运行空间。 每个运行空间都有自己的 当前目录。 这与 不同 [System.Environment]::CurrentDirectory。 调用 .NET API 或运行本机应用程序而不提供显式目录路径时,此行为可能是一个问题。

即使位置 cmdlet 确实设置了进程范围的当前目录,也不能依赖它,因为另一个运行空间可能随时更改它。 应使用位置 cmdlet 使用特定于当前运行空间的当前工作目录执行基于路径的操作。

堆栈是一个最后进入的先出列表,其中仅可访问最近添加的项。 采用要使用项的顺序将这些项添加到堆栈,然后采用相反顺序检索这些项以供使用。 PowerShell 允许将提供程序位置存储在位置堆栈中。

PowerShell 创建未命名的默认位置堆栈,你可以创建多个命名位置堆栈。 如果未指定堆栈名称,PowerShell 将使用当前位置堆栈。 默认情况下,未命名的默认位置是当前位置堆栈,但可以使用 Set-Location cmdlet 更改当前位置堆栈。

若要管理位置堆栈,请使用 PowerShell 位置 cmdlet,如下所示。

  • 若要将位置添加到位置堆栈,请使用 Push-Location cmdlet。

  • 若要从位置堆栈获取位置,请使用 Pop-Location cmdlet。

  • 若要显示当前位置堆栈中的位置,请使用 cmdlet 的 Get-LocationStack 参数。

  • 若要显示命名位置堆栈中的位置,请使用 cmdlet 的 Get-LocationStackName 参数。

  • 若要创建新的位置堆栈,请使用 cmdlet 的 Push-Location StackName 参数。 如果指定不存在的堆栈, Push-Location 则会创建该堆栈。

  • 若要使位置堆栈成为当前位置堆栈,请使用 cmdlet 的 Set-Location StackName 参数。

未命名的默认位置堆栈仅在其是当前位置堆栈时处于完全可访问状态。 如果将命名位置堆栈设为当前位置堆栈,则不能再使用 Push-LocationPop-Location cmdlet 从默认堆栈添加或获取项,或使用 Get-Location cmdlet 在未命名的堆栈中显示位置。 若要使未命名的堆栈成为当前堆栈,请使用值为 $null 的 cmdlet 的 Set-LocationStackName 参数或空字符串 ("") 。

还可以通过其内置别名 pushd来引用 Push-Location 。 有关详细信息,请参阅 about_Aliases

Push-Location cmdlet 旨在处理任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PSProvider。 有关详细信息,请参阅 about_Providers