圖 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 *,可以列出所有的指令。
Windows PowerShell 的管線功能
DOS 或 UNIX shell 都能利用「管線符號」(pipeline symbol),將指令的執行結果移轉到另一個指令,讓另一個指令處理前一個指令轉來的數據。Windows PowerShell 的管線符號也是 |,例如之前用過的 get-help * | more,就是將 get-help * 的結果轉給 more,而 more 會讓結果顯示滿整個窗口就暫停。
管線是各種 shell 環境的「黏合」最佳例證,例如管線就黏合了 Windows PowerShell 的各個指令,進而讓各個指令完成一件工作。再舉幾個管線的例子。首先是:
ipconfig | findstr "Address"
被管線黏合的 ipconfig 和 findstr 都是 Win32 既有的外部指令,前者會顯示、設定計算機的 IP 地址,后者則能以各種方式找出特定字符串。以上的敘述是將 ipconfig 的執行結果轉給 findstr,并讓 findstr 找出執行結果的 Address 字符串。
文章來源于領測軟件測試網 http://www.kjueaiud.com/