1. powershell 更加 “powerful”
微軟起“powershell”這個名字雖然有吹牛逼的嫌疑,但從事實來看并非如此。powershell 的強大程度分分鐘秒殺 Linux 上的 bash,更不要說飽受詬病的 cmd 了。
2. powershell 全面支持面向對象
powershell 背后依靠的是一套完整的 .NET 編程體系,其腳本更容易編寫且穩健性大大提升。反過來看 cmd,那些完全由各種命令堆砌而成的一條條指令簡直就是“小打小鬧”。
3. 從 cmd 遷移到 powershell 成本幾乎為零
如果你對老朋友 cmd 充滿情懷,無法舍棄,完全無妨!因為 powershell 可以看作 cmd 的超集,所有的常用命令諸如dir, cd, ipconfig等在 powershell 中都能直接使用。但背后的實現方式是完全不同的,powershell 基于完全的面向對象,它通過給函數和對象“起別名”的方式來支持這些舊的命令。
4. 誘人的管道操作
管道操作的靈感來自 Linux 的 shell,但由于 powershell 將一切都包裝成為對象,而不是直接處理字符串,因此其管道操作的靈活程度遠在 Linux 的 shell 之上。
5. 絕對完備的幫助文檔
任何函數與對象都能夠通過help *命令來查看其幫助文檔(準確來說應該是Get-Help函數,這是更加“面向對象”化的命名方式,而help是它的別名),如果看不明白,加上-examples參數會有應用實例,如果仍看不明白,加上-online參數會打開完整的在線幫助文檔,不得不佩服,微軟的一條龍服務做的很到位。
6. 支持基本的數學運算和數組操作(加減乘除模),打開就能當計算器用
7. 良好的腳本編程體驗
powershell 腳本的語法與高級編程語言非常相近,例如其分支語句if(...){} else{}、循環語句for(...){}與 C 語言別無二致,因而大大提高了編程體驗。
8. 擁有豐富的字符串操作對象和函數,全面支持正則表達式
字符串處理是 shell 腳本的主要任務,正則表達式的重要性也無需多說。
9. 支持重定向,讀寫文件易如反掌
powershell 原生支持將結果導出到html, csv, xml等文件,也可以通過重定向從文件中讀取內容。
10. 支持 Debug
雖然這個功能很少用到,但支持 debug 是走向完備編程語言不可或缺的一項功能。