使用称为别名的机制,Windows PowerShell 允许用户通过替代名称来引用命令。使用别名,具有其他 shell 经验的用户可以在 Windows PowerShell 中重用其已知的通用命令名称来执行类似操作。尽管我们不会详细介绍 Windows PowerShell 别名,但在 Windows PowerShell 入门阶段您仍然可以使用这些别名。

别名将所键入的命令名称与另一个命令相关联。例如,Windows PowerShell 有一个名为 Clear-Host 的内部函数,用于清除输出窗口。如果在命令提示符下键入 clsclear 命令,Windows PowerShell 就会将此命令解释为 Clear-Host 函数的别名并运行 Clear-Host 函数。

此功能有助于用户了解 Windows PowerShell。首先,大多数 Cmd.exe 和 UNIX 用户都有其已按名称记忆的大型命令清单,尽管 Windows PowerShell 的等价命令可能不会产生完全相同的结果,但它们在形式上的相似性足以让用户无需先记住 Windows PowerShell 名称即可直接使用这些命令来完成工作。其次,对于已经熟悉其他 shell 的用户而言,了解新 shell 的主要困难在于“手指记忆”所导致的错误。假定您已使用 Cmd.exe 多年,在您看到满屏输出并希望将其清除时,您会条件反射地键入 cls 命令,然后按 Enter 键。但在 Windows PowerShell 中没有 Clear-Host 函数的别名,因而您只会看到错误消息“'cls' is not recognized as a cmdlet, function, operable program, or script file.”,并且仍不知道要清除输出应执行什么操作。

下面是可在 Windows PowerShell 内使用的通用 Cmd.exe 和 UNIX 命令的简短列表:

cat

dir

mount

rm

cd

echo

move

rmdir

chdir

erase

popd

sleep

clear

h

ps

sort

cls

history

pushd

tee

copy

kill

pwd

type

del

lp

r

write

diff

ls

ren

 

如果您发现自己会条件反射地使用这些命令之一,而又希望知道本机 Windows PowerShell 命令的真实名称,则可以使用 Get-Alias 命令:

PS> Get-Alias cls

CommandType     Name                            Definition
-----------     ----                            ----------
Alias           cls                             Clear-Host

为了使示例更容易理解,《Windows PowerShell 用户指南》中通常避免使用别名。但是,如果要处理来自其他来源的任意 Windows PowerShell 代码段,或希望定义自己的别名,则尽早了解有关别名的详细信息仍然十分有用。本节中的其余内容将介绍标准别名以及如何定义您自己的别名。

解释标准别名

上述别名是专为实现与其他界面的名称兼容性而设计的,Windows PowerShell 中的内置别名与其不同,它们通常是为了简短易用而设计的。这些简短的名称便于快速键入,但如果您不了解其含义,则无法解读它们。

通过提供一组基于常用动词和名词的速记名称的标准别名,Windows PowerShell 试图在清晰性与简短性之间取得平衡。这样,在一组常用 cmdlet 的核心别名中,您只需知道速记名称即可解读这些命令。例如,在标准别名中,动词 Get 缩写为 g,动词 Set 缩写为 s,名词 Item 缩写为 i,名词 Location 缩写为 l,而名词 Command 缩写为 cm

以下简短示例说明了这一工作机制。Get-Item 的标准别名是通过将表示 Get 的 g 与表示 Item 的 i 组合而来的:gi。Set-Item 的标准别名是通过将表示 Set 的 s 与表示 Item 的 i 组合而来的:si。Get-Location 的标准别名是通过将表示 Get 的 g 与表示 Location 的 l 组合而来的:gl。Set-Location 的标准别名是通过将表示 Set 的 s 与表示 Location 的 l 组合而来的:sl。Get-Command 的标准别名是通过将表示 Get 的 g 与表示 Command 的 cm 组合而来的:gcm。不存在 Set-Command cmdlet,但如果存在,我们可以很容易猜测出其标准别名是通过将表示 Set 的 s 与表示 Command 的 cm 组合而来的:scm。此外,如果熟悉 Windows PowerShell 别名的用户遇到 scm,他们也可以猜测到该别名是指 Set-Command。

创建新别名

可以使用 Set-Alias cmdlet 创建自己的别名。例如,以下语句将创建在“解释标准别名”中介绍的标准 cmdlet 别名:

Set-Alias -Name gi -Value Get-Item
Set-Alias -Name si -Value Set-Item
Set-Alias -Name gl -Value Get-Location
Set-Alias -Name sl -Value Set-Location
Set-Alias -Name gcm -Value Get-Command

在内部,Windows PowerShell 在启动期间使用此类命令,但这些别名是不可更改的。如果尝试实际执行这些命令之一,您将获得一条错误消息,表明无法修改该别名。例如:

PS> Set-Alias -Name gi -Value Get-Item

Set-Alias : Alias is not writeable because alias gi is read-only or constant and cannot be written to.

At line:1 char:10

+ Set-Alias <<<< -Name gi -Value Get-Item




目录