在 Windows 资源管理器中导航文件夹系统时,通常具有特定的工作位置,即当前打开的文件夹。通过单击当前文件夹中的项目,可以轻松地对其进行操作。对于 Cmd.exe 之类的命令行界面,当您位于某特定文件所在的同一文件夹中时,可以通过指定相对简短的名称来对其进行访问,而无需指定该文件的完整路径。当前目录也称为工作目录。

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

获取当前位置 (Get-Location)

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

PS> Get-Location
Path
----
C:\Documents and Settings\PowerUser
注意:

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

设置当前位置 (Set-Location)

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

PS> Set-Location -Path C:\Windows

输入命令之后,您将会发现没有收到有关命令效果的任何直接反馈。大多数执行操作的 Windows PowerShell 命令会产生少量输出或没有输出,因为输出并不总是有用的。若要验证在输入 Set-Location 命令时是否已成功进行了目录更改,请在输入 Set-Location 命令时包括 -PassThru 参数:

PS> Set-Location -Path C:\Windows -PassThru
Path
----
C:\WINDOWS

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

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

例如,如果您在 C:\Windows 文件夹中,则单句点 (.) 表示 C:\Windows,而双句点 (..) 表示 C:。通过键入以下命令可以从当前位置切换到 C: 驱动器根目录:

PS> Set-Location -Path .. -PassThru

Path

----

C:\

此方法同样适用于不属于文件系统驱动器的 Windows PowerShell 驱动器(例如 HKLM:)。通过键入以下命令可以将您的位置设置为注册表中的 HKLM\Software 项:

 PS> Set-Location -Path HKLM:\SOFTWARE -PassThru

Path
----
HKLM:\SOFTWARE

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

PS> Set-Location -Path .. -PassThru

Path
----
HKLM:\

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

cd -Path C:\Windows

chdir -Path .. -PassThru

sl -Path HKLM:\SOFTWARE -PassThru

保存和撤回最近的位置(Push-Location 和 Pop-Location)

更改位置时,有必要对曾经处于的位置进行跟踪,并且能够返回以前的位置。Windows PowerShell 中的 Push-Location cmdlet 可以创建您曾经处于的目录路径的有序历史记录(“堆栈”),您可以使用补充的 Pop-Location cmdlet 来逐步退回目录路径的历史记录。

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

 PS> Get-Location

Path
----
C:\Documents and Settings\PowerUser 
注意:

在许多编程设置(包括 .NET Framework)中,术语堆栈具有特殊的含义。与物料的物理堆栈相似,最后一个放入堆栈的项目将是您可以从该堆栈中取出的第一个项目。如果用通俗语言来表示向堆栈中添加项目,即称为将项目“压入”堆栈。如果用通俗语言来表示从堆栈中取出项目,即称为将项目“弹出”堆栈。

若要将当前位置压入堆栈,然后转到 Local Settings 文件夹,请键入:

 PS> Push-Location -Path "Local Settings"

然后可以通过键入以下命令,将 Local Settings 位置压入堆栈,并转到 Temp 文件夹:

PS> Push-Location -Path Temp

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

PS> Get-Location

Path
----
C:\Documents and Settings\PowerUser\Local Settings\Temp

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

PS> Pop-Location
PS> Get-Location

Path
----
C:\Documents and Settings\me\Local Settings

Set-Location cmdlet 相同,在输入 Pop-Location cmdlet 时可以包括 -PassThru 参数以显示所输入的目录:

PS> Pop-Location -PassThru

Path
----
C:\Documents and Settings\PowerUser

还可以使用位置 cmdlet 来处理网络路径。如果有一个名为 FS01 的服务器,该服务器有一个名为 Public 的共享区,则可以通过键入以下命令来更改位置:

Set-Location \\FS01\Public

Push-Location \\FS01\Public

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

如果该驱动器为空,您将获得以下错误消息:

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

使用命令行界面时,用 Windows 资源管理器来检查可用物理驱动器并不太方便。而且,Windows 资源管理器不会为您显示所有 Windows PowerShell 驱动器。Windows PowerShell 提供了一组用于操作 Windows PowerShell 驱动器的命令,稍后我们将介绍这些命令。




目录