初探 Windows PowerShell
任何 shell 都有列出目录、文件的命令,Windows PowerShell 呢?先输入 DOS 的 dir 试试吧!
图 1 dir 指令执行结果
嗯!dir 果然也通,但是列示的方式不同于以往的 dir 指令。一时兴起,我输入了 UNIX 的 ls 指令,窗口显示了与 dir 指令相同的结果;真有趣(这时候我尚未阅读任何 Windows PowerShell 文件,只是很直觉输入指令)。
Windows PowerShell 指令
cmdlet 是 Windows PowerShell 的指令,这相当于 DOS 或其它 shell 的内建指令(但是刚刚输入的 dir 或 ls 并不是 cmdlet,这稍后将会说明),cmdlet 的发音方式是 command-let。cmdlet 名称的格式都是以连字符号隔开的一对动词和名词,并且通常都是单数名词。例如可以在线查询 cmdlet 用法的 cmdlet 即为 get-help。cmdlet 名称的动词部分大致有 get、set、add、remove 等等(Windows PowerShell 的操作与 DOS 相同,输入的字母都不分大小写)。
get-help 是颇为重要的 cmdlet,可以在线查询所有的 Windows PowerShell 指令和说明文件。例如:
? get-help *:列出所有的主题,包括指令和概念。
? get-help * | more:列出所有的主题,包括指令和概念,而且显示满整个窗口就暂停。
? get-help about*:列出所有的概念主题,例如万元字符、foreach 循环。
? get-help get*:列出所有 get 开头的主题。
? get-help {<指令名称或主题名称>}:列出指定的指令或主题的说明,例如 get-help dir 可以查询 dir 指令的用法,而 get-help about_wildcard 可以查询「万用字符」这项主题的用法。
此外,也可以用 help 取代 get-help,最大的好处是 help 显示满整个窗口,预设就会自动暂停。
一开始曾经使用了 dir 和 ls,虽然这并不是 cmdlet,但的确可用于 Windows PowerShell。原来这类的指令称为 alias(化名),类似 cmdlet 的快捷方式,例如 dir 和 ls 实际上都是 get-ChildItem 的 alias,get-ChildItem 才是 cmdlet;而 get-ChildItem 的功能,是列出磁盘驱动器指定位置的子项目。
Windows PowerShell 的指令包含了许多内建的 alias,这些 alias 都是我们原本熟悉的 DOS 或 shell 指令,除了上述的 dir 和 ls,例如原本 DOS 指令的 rm、rmdir、rd、cls、copy 等,以及 BASH 的 cat、sleep、clear、cp 等,都是 Windows PowerShell 的 alias,也就是说,可以直接使用这些 alias;若要列出所有的 alias,可以用 get-alias 指令。除了使用内建的 alias,Windows PowerShell 也允许使用者以 set-alias 建立自己的 alias。
除了 cmdlet 和 alias,Windows PowerShell 的指令还有 Application 和 Function 两种类型,前者指的是独立的程序文件(在 DOS 时代称为外部指令),后者是有名称的程序代码区块,也就是函式:不论 Application 或 Function 都可以当作 Windows PowerShell 指令来用,也可以用在脚本程序里。利用 get-command *,可以列出所有的指令。