Push-Location
将当前位置添加到位置堆栈的顶部。
语法
Push-Location
[[-Path] <String>]
[-PassThru]
[-StackName <String>]
[-UseTransaction]
[<CommonParameters>]
Push-Location
[-LiteralPath <String>]
[-PassThru]
[-StackName <String>]
[-UseTransaction]
[<CommonParameters>]
说明
Push-Location
cmdlet 将当前位置添加(“推入”)到某个位置堆栈中。 如果指定了路径,则 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 驱动器 (PSDrive) 中都可以使用位置 cmdlet。
示例 3
此命令将当前位置推入到默认堆栈中。 它不会更改位置。
PS C:\> Push-Location
示例 4 - 创建和使用命名堆栈
这些命令展示了如何创建和使用已命名的位置堆栈。
PS C:\> Push-Location ~ -StackName Stack2
PS C:\Users\User01> Pop-Location -StackName Stack2
PS C:\>
第一个命令将当前位置推送到名为 Stack2 的新堆栈上,然后将当前位置更改为主目录,在命令中用波形符 (~
) 表示,在文件系统提供程序驱动器上使用时相当于 $HOME
。
如果会话中尚不存在 Stack2,则 Push-Location
会创建该堆栈。 第二条命令使用 Pop-Location
cmdlet 从 Stack2 堆栈中弹出原始位置 (C:\
)。 如果不使用 StackName 参数,则 Pop-Location
将从未命名的默认堆栈中弹出位置。
有关位置堆栈的详细信息,请参阅备注。
参数
-LiteralPath
指定新位置的路径。 与 Path 参数不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
类型: | String |
别名: | PSPath |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-PassThru
将表示位置的对象传递到管道。 默认情况下,此 cmdlet 将不产生任何输出。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Path
在此命令将当前位置添加(推入)到堆栈顶部之后,将把你的位置更改到由此路径指定的位置。 输入其提供程序支持此 cmdlet 的任何位置的路径。 允许使用通配符。 参数名为可选项。
类型: | String |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | True |
-StackName
指定要将当前位置添加到的位置堆栈。 输入位置堆栈名称。
如果堆栈不存在,则 Push-Location
将创建该堆栈。
如果不使用此参数,则 Push-Location
将位置添加到当前位置堆栈。 默认情况下,当前位置堆栈为 PowerShell 创建的未命名的默认位置堆栈。
若要将某个位置堆栈设为当前位置堆栈,请使用 Set-Location
cmdlet 的 StackName 参数。 有关位置堆栈的详细信息,请参阅备注。
注意
Push-Location
无法将位置添加到未命名的默认堆栈中,除非该堆栈为当前位置堆栈。
类型: | String |
Position: | Named |
默认值: | Default stack |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-UseTransaction
在活动事务中使用该命令。 仅当正在执行事务时,此参数才有效。 有关详细信息,请参阅 about_Transactions。
类型: | SwitchParameter |
别名: | usetx |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将包含路径(但不是文本路径)的字符串传递给此 cmdlet。
输出
None
默认情况下,此 cmdlet 不返回任何输出。
使用 PassThru 参数时,此 cmdlet 会返回一个 PathInfo 对象,表示 cmdlet 操作后的当前路径。
备注
Windows 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。若要显示当前位置堆栈中的位置,请使用
Get-Location
cmdlet 的 Stack 参数。若要显示命名位置堆栈中的位置,请使用
Get-Location
cmdlet 的 StackName 参数。若要创建一个新的位置堆栈,请使用
Push-Location
cmdlet 的 StackName 参数。 如果指定了不存在的堆栈,则Push-Location
会创建该堆栈。若要将某个位置堆栈设为当前位置堆栈,请使用
Set-Location
cmdlet 的 StackName 参数。
未命名的默认位置堆栈仅在其是当前位置堆栈时处于完全可访问状态。
如果使命名位置堆栈成为当前位置堆栈,则不能再使用 Push-Location
或 Pop-Location
cmdlet 添加或获取默认堆栈中的项,或者使用 Get-Location
cmdlet 显示未命名堆栈中的位置。 若要使未命名堆栈成为当前堆栈,请使用 Set-Location
cmdlet 的 StackName 参数,且值为 $null
或空字符串 (""
)。
还可以通过其内置别名 pushd
来引用 Push-Location
。 有关详细信息,请参阅 about_Aliases。
Push-Location
cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PSProvider
。 有关详细信息,请参阅 about_Providers。