Get-Location
获取有关当前工作位置或某个位置堆栈的信息。
语法
Get-Location
[-PSProvider <String[]>]
[-PSDrive <String[]>]
[<CommonParameters>]
Get-Location
[-Stack]
[-StackName <String[]>]
[<CommonParameters>]
说明
Get-Location
cmdlet 获取表示当前目录的对象,非常类似于打印工作目录 (pwd) 命令。
当你在 PowerShell 驱动器间移动时,PowerShell 会保留你在每个驱动器中的位置。 可以使用此 cmdlet 来查找你在每个驱动器中的位置。
可以在运行时使用此 cmdlet 来获取当前目录并将其用于函数和脚本中,例如某个函数可以在 PowerShell 提示符中显示当前目录。
还可以使用此 cmdlet 显示位置堆栈中的位置。 有关详细信息,请参阅 Stack 和 StackName 参数的“备注”和描述。
示例
示例 1:显示当前驱动器位置
此命令显示你在当前 PowerShell 驱动器中的位置。
PS C:\Windows> Get-Location
Path
----
C:\Windows
例如,如果你位于 C:
驱动器的 Windows
目录中,则此命令将显示该目录的路径。
示例 2:显示不同驱动器的当前位置
此示例演示如何使用 Get-Location
在不同的 PowerShell 驱动器中显示当前位置。 Set-Location
用于将位置更改为不同 PSDrive 上的多个不同路径。
PS C:\> Set-Location C:\Windows
PS C:\Windows> Set-Location HKLM:\Software\Microsoft
PS HKLM:\Software\Microsoft> Set-Location "HKCU:\Control Panel\Input Method"
PS HKCU:\Control Panel\Input Method> Get-Location -PSDrive C
Path
----
C:\Windows
PS HKCU:\Control Panel\Input Method> Get-Location -PSDrive HKLM
Path
----
HKLM:\Software\Microsoft
PS HKCU:\Control Panel\Input Method> Set-Location C:
PS C:\Windows> Get-Location -PSProvider Registry
Path
----
HKCU:\Control Panel\Input Method
示例 3:使用堆栈获取位置
此示例演示如何使用 Get-Location
的 Stack 和 StackName 参数来列出当前位置堆栈和备用位置堆栈中的位置。
Push-Location
cmdlet 用于更改为三个不同的位置。 第三个推送使用不同的堆栈名称。 Get-Location
的 Stack 参数显示默认堆栈的内容。 Get-Location
的 StackName 参数显示名为 Stack2
的堆栈的内容。
PS C:\> Push-Location C:\Windows
PS C:\Windows>Push-Location System32
PS C:\Windows\System32>Push-Location WindowsPowerShell -StackName Stack2
C:\Windows\System32\WindowsPowerShell>Get-Location -Stack
Path
----
C:\Windows
C:\
C:\Windows\System32\WindowsPowerShell>Get-Location -StackName Stack2
Path
----
C:\Windows\System32
示例 4:自定义 PowerShell 提示符
此示例演示如何自定义 PowerShell 提示符。
PS C:\>
function prompt { 'PowerShell: ' + (Get-Location) + '> '}
PowerShell: C:\>
定义提示符的函数包括 Get-Location
命令,只要提示符出现在控制台中就会运行该命令。
默认 PowerShell 提示符的格式由一个名为 prompt
的特殊函数来定义。 可以通过创建一个名为 prompt
的新函数来更改控制台中的提示符。
要查看当前的 prompt 函数,请键入以下命令:Get-Content Function:\prompt
参数
-PSDrive
获取指定的 PowerShell 驱动器中的当前位置。
例如,如果你位于 Cert:
驱动器中,则可以使用此参数来查找你在 C:
驱动器中的当前位置。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-PSProvider
获取指定的 PowerShell 提供程序支持的驱动器中的当前位置。 如果指定的提供程序支持多个驱动器,则此 cmdlet 将返回最近访问过的驱动器上的位置。
例如,如果你位于 C:
驱动器中,则可以使用此参数来查找你在 PowerShell Registry 提供程序的驱动器中的当前位置。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Stack
指示此 cmdlet 显示添加到当前位置堆栈的位置。 可以使用 Push-Location
cmdlet 将位置添加到堆栈。
若要显示其他位置堆栈中的位置,请使用 StackName 参数。 有关位置堆栈的信息,请参阅备注。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-StackName
以字符串数组的形式指定命名位置堆栈。 输入一个或多个位置堆栈名称。
若要显示当前位置堆栈中的位置,请使用 Stack 参数。 若要将某个位置堆栈设为当前位置堆栈,请使用 Set-Location
cmdlet。
此 cmdlet 无法显示未命名的默认堆栈中的位置,除非该堆栈为当前堆栈。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
输入
None
不能通过管道将对象传递给此 cmdlet。
输出
默认情况下,此 cmdlet 会返回一个 PathInfo 对象。
使用 Stack 或 StackName 参数时,此 cmdlet 将返回 PathInfoStack 对象。
备注
PowerShell 包含 Get-Location
的以下别名:
所有平台:
gl
pwd
PowerShell 支持每个进程有多个运行空间。 每个运行空间都有自己的当前目录。
这与 [System.Environment]::CurrentDirectory
不同。 调用 .NET API 或运行本机应用程序而不提供显式目录路径时,此行为可能是一个问题。
Get-Location
cmdlet 返回当前 PowerShell 运行空间的当前目录。
此 cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中的提供程序,请键入 Get-PSProvider
。 有关详细信息,请参阅 about_Providers。
PSProvider、PSDrive、Stack 和 StackName 参数的交互方式取决于提供程序。 某些组合将会导致错误,例如,指定驱动器以及没有公开该驱动器的提供程序。 如果没有指定参数,则此 cmdlet 为包含当前工作位置的提供程序返回 PathInfo 对象。
堆栈是一种后进先出的列表,在其中只能访问最后添加的项。 采用要使用项的顺序将这些项添加到堆栈,然后采用相反顺序检索这些项以供使用。 PowerShell 可帮助你在位置堆栈中存储提供程序位置。 PowerShell 创建一个未命名默认位置堆栈,你可以创建多个命名位置堆栈。 如果没有指定位置堆栈,则 PowerShell 使用当前位置堆栈。 默认情况下,未命名的默认位置为当前位置堆栈,但你可以使用 Set-Location
cmdlet 来更改当前位置堆栈。
若要管理位置堆栈,请使用 PowerShell *-Location
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 添加或获取默认堆栈中的项,或者使用此 cmdlet 显示未命名堆栈中的位置。 若要使未命名堆栈成为当前堆栈,请使用 Set-Location
cmdlet 的 StackName 参数,且值为 $null
或空字符串 (""
)。