管理当前位置Managing Current Location

    Windows PowerShell 使用名词 Location 来引用工作目录,并实现一系列 cmdlet 以检查你的位置并对其进行操作。

    若要确定你的当前目录位置的路径,请输入 Get-Location 命令:

    备注

    Get-Location cmdlet 类似于 BASH shell 中的 pwd 命令。Set-Location cmdlet 类似于 Cmd.exe 中的 cd 命令。

    Get-Location 命令与 Set-Location 命令结合使用。Set-Location 命令允许你指定当前目录位置。

    输入命令后,你将注意到你不会收到任何有关该命令影响的直接反馈。执行某项操作的大多数 Windows PowerShell 命令可生成很少的输出或根本不会生成输出,因为该输出并不总是有用。若要验证在你输入 Set-Location 命令时是否已成功更改目录,请在输入 Set-Location 命令时包括 -PassThru 参数:

    1. PS> Set-Location -Path C:\Windows -PassThru
    2. Path
    3. ----
    4. C:\WINDOWS

    可将 -PassThru 参数与 Windows PowerShell 中的许多 Set 命令结合使用,以在没有默认输出的情况下返回有关结果的信息。

    采用在大多数 UNIX 和 Windows 命令 shell 中指定路径的相同方式,指定相对于当前位置的路径。在相对路径的标准表示法中,句点 (.) 表示当前文件夹,而双句点 (..) 表示当前位置的父目录。

    1. PS> Set-Location -Path .. -PassThru
    2. Path
    3. ----
    4. C:\

    相同的技术适用于非文件系统驱动器(例如 HKLM:)的 Windows PowerShell 驱动器。可以在注册表中将你的位置设置为 HKLM\Software 项,方法是键入:

    1. Path
    2. ----

    然后,可以通过使用相对路径将目录位置更改为父目录,它是 Windows PowerShell HKLM: 驱动器的根目录:

    1. PS> Set-Location -Path .. -PassThru
    2. Path
    3. ----
    4. HKLM:\

    你可以键入 Set-Location,或使用任何用于 Set-Location(cd、chdir、sl)的内置 Windows PowerShell 别名。例如:

    1. chdir -Path .. -PassThru
    1. sl -Path HKLM:\SOFTWARE -PassThru

    当更改位置时,它有助于跟踪你访问过的位置并使你能够返回到之前的位置。Windows PowerShell 中的 Push-Location cmdlet 将创建一个你访问过的目录路径的有序历史记录(“堆栈”),你可以通过使用补充的 Pop-Location cmdlet 在目录路径历史记录上返回到之前位置。

    例如,Windows PowerShell 通常在用户的主目录中启动。

    1. PS> Get-Location
    2. Path
    3. ----

    备注

    字词 stack 在许多编程设置(包括 .NET Framework)中具有特殊含义。例如项的物理堆栈,你放置在堆栈上的最后一项是可以从堆栈中提取的第一个项。将项添加到堆栈俗称为将项“推送”到堆栈上。从堆栈中提取项俗称为将项从堆栈中“弹出”。

    若要将当前位置推送到堆栈上,然后将其移动到“本地设置”文件夹,请键入:

    1. Push-Location -Path "Local Settings"
    1. Push-Location -Path Temp

    你可以验证是否通过输入 Get-Location 命令更改了目录:

    然后,你可以通过输入 Pop-Location 命令弹回到最近访问的目录中,并且通过输入 Get-Location 命令验证该更改:

    1. PS> Get-Location
    2. Path
    3. ----
    4. C:\Documents and Settings\me\Local Settings

    Set-Location cmdlet 一样,当你输入 Pop-Location cmdlet 来显示输入的目录时,你可以包含 -PassThru 参数:

    1. PS> Pop-Location -PassThru
    2. Path
    3. ----
    4. C:\Documents and Settings\PowerUser

    还可以将 Location cmdlet 与网络路径结合使用。如果你有一个名为 FS01 并且共享名为 Public 的服务器,你可以通过键入以下内容更改你的位置

    1. Set-Location \\FS01\Public

    1. Push-Location \\FS01\Public

    你可以使用 Push-LocationSet-Location 命令将位置更改为任何可用的驱动器。例如,如果你有驱动号为 D 且包含数据 CD 的本地 CD-ROM 驱动器,你可以通过输入 Set-Location D: 命令将该位置更改为 CD 驱动器。

    如果驱动器是空的,你将获得以下错误消息:

    1. Set-Location : Cannot find path 'D:\' because it does not exist.

    当你使用命令行接口时,使用文件资源管理器检查可用的物理驱动器会很不方便。此外,文件资源管理器不会向你显示所有 Windows PowerShell 驱动器。Windows PowerShell 提供一组命令,用于对 Windows PowerShell 驱动器进行操作,我们将在下一步讨论这些命令。