Windows PowerShell

Tab 扩展

Windows PowerShell


有关 Windows PowerShell 的完整介绍,请务必查看 Windows PowerShell Week 中的网络广播点播

*

Tab 扩展


使用 Windows PowerShell 的一大优点便是只需守在命令提示符旁便可键入所有内容;无需应付对话框、鼠标单击或任何其他 GUI 操作。另一方面,Windows PowerShell 的一大缺点便是必须守在命令提示符旁键入所有内容:无法使用对话框、鼠标单击或任何其他 GUI 快捷方式。

换句话说,如果您是那种喜欢在命令提示符下键入命令的人,那么 Windows PowerShell 就如同梦想成真一样。但如果您不喜欢键入,或发现键入很困难,又该怎么办呢?在这种情况下,您只能抱怨自己倒霉,是这样吗?

不,不完全是。当然,在 Windows PowerShell 中始终需要一定数量的键入操作。但 Windows PowerShell 也包含少量可显著减少所需键入量的功能。其中最酷的功能便是 Tab 扩展。

实际上,Tab 扩展并不是新功能,许多用户可能都熟悉 Cmd.exe 中内置的 Tab 扩展功能。例如,假设您要切换到 C:\Documents and Settings 文件夹。若要执行该操作,您需要键入这一整条命令,对吗?

cd "c:\documents and settings"

嗯,如果您愿意,可以这么做。您也可以只键入下列内容,然后按 Tab 键:

cd c:\d

如果 Documents and Settings 文件夹为驱动器 C 的根目录中唯一一个名称以字母 D 开头的文件夹,那么这样便可以了:按 Enter 键,然后命令外壳将自动填写该路径的其余部分(最方便的是,还会插入双引号)。但如果有三四个文件夹的名称都以字母 D 开头,该怎么办呢?那没关系:只需继续按 Tab 键,命令外壳便会一直循环显示名称以字母 D 开头的整组文件夹。最终出现所需文件夹时,可按 Enter 键让命令外壳代您完成键入工作。

对于文件和文件夹路径,Windows PowerShell 也具有同样的功能。想要切换到 C:\Documents and Settings 文件夹?您要做的所有工作就是键入以下内容,然后按 Tab 键:

cd c:\d

如有必要,可一直按 Tab 键,直到出现 C:\Documents and Settings 为止。此时,按 Enter 键就和变魔术一样,会一下子便进入 Documents and Settings 文件夹。

等一下,先不要欢呼;俗话说,好戏还在后头。假设您要使用 Cmdlet Get-AuthenticodeSignature。如果您很年轻并且身体条件特别棒,那么可以自己键入整个 Cmdlet 名称。如果您很富有,可以将该工作外包,让某人为您键入所有内容。或者,如果您很懒(和编写脚本的那些人一样),您可以只键入以下内容,然后按 Tab 键:

get-au

没错:在 Windows PowerShell 中,Tab 扩展不仅适用于文件和文件夹路径,也适用于 Cmdlet 名称。提到 Cmdlet,是那个 Cmdlet Get-PSSnap-in?还是 Get-PSSnapin?或者我们错得离谱;也许是 Get-PowerShellSnapin?说实话,我们记不住。但没关系;我们要做的所有工作就是键入以下内容,然后开始按 Tab 键:

get-p

我们会立刻找到我们要找的那一个:Get-PSSnapin。

Tab 扩展甚至可使用 Cmdlet 参数。例如,Get-Help Cmdlet 包含名为 -detailed 的参数,该参数可返回关于某主题的详细帮助(包括示例)。您说您喜欢详细的帮助但讨厌键入 –detailed?那就不要键入。试试下面的技巧来获取关于 Get-ChildItem Cmdlet 的详细帮助:

1.

键入 get-h,然后按 Tab 键。

2.

按空格键,然后键入 get-ch,再按 Tab 键。

3.

按空格键,然后键入 ,再按 Tab 键。一直按 Tab 键,直到出现 –Detailed,然后按 Enter。

非常简单,是不是?

趁着讨论这个主题,再为您提供一个键入快捷方式。对于 Cmdlet 参数,只需键入 Windows PowerShell 所需数量的参数名称,以准确指明要使用的那些参数。例如,Get-ChildItem Cmdlet 包括下列参数:

-codeSigningCert

-Debug

-ErrorAction

-ErrorVariable

-exclude

-filter

-force

-include

-literalPath

-name

-OutVariable

-path

-recurse

-Verbose

需要使用 –codeSigningCert 参数?如果要使用该参数,可键入如下完整参数名:

get-childitem cert:\. -recurse –codesigningcert

另一方面,由于 –codeSigningCert 参数是唯一一个以字母 C 开头的 Get-ChildItem 参数,您可以通过只键入 -c 来添加此参数:

get-childitem cert:\. -recurse –c

很好。顺便提一下,我们有没有提到 Tab 扩展也适用于变量名?假设您为某变量取了个很难记的名字 $TheMainVariableThatGetsUsedInMyScript。要键入的字符较多,尤其是对于变量名来说。那么不要键入它;在需要使用该变量时,只需键入以下内容,然后按 Tab 键:

$th

很酷。再举一个例子。假设您使用 New-Object Cmdlet 来创建 Microsoft Excel 的实例:

$a = new-object -comobject excel.application

现在,键入以下内容,然后开始按 Tab 键,看看会发生什么:

$a.

这下您可以欢呼了。


返回页首返回页首