一開始接觸POWERSHELL,是因為上司要求用腳本管理Hyper-V上面的操作系統和服務。實現一些產品在測試環境的部署和恢復。當然方法有很多,但是我第一時間,想起了現在比較流行的POWERSHELL. 並且找到了一個很方便的API: http://www.codeplex.com/PSHyperv . 對於完全沒有接觸過PS的我,我就開始看PSHyperV這個開源的類庫,有時候,我覺得看開源API的確是快速上手一門語言的辦法,當然,有一個比較好的IDE,高光一下裡面的語法那就更加不錯了。這個IDE 我選擇了PowerGUI(Free!). 一番速成之後,評估結束,寫了個文檔,就給我們的IT用去了。值得一提的是,WMI Object在POWERSHELL裡面的作用,當時我在想,沒有了WMI,powershell就不POWER了。因此驚艷1, WMI
1. WMI Object:
WMI功能非常強大,可以操作本地和遠程的電腦的服務,例如獲取遠程電腦的時間,設置遠程電腦的某些服務,設置IIS,當然,還要操作HYPER-V的服務。配合使用WMIQuery,簡直就方便到極點。
2. XML
旁邊有個同事總說, 罪惡的XML呀....本人基本同意,我還是喜歡簡單的JOSN多一點。但是在POWERSHELL裡面的XML就沒有那麼罪惡啦,使用非常簡單,例如:
<dataroot>
<abc><cde>罪惡</cde></abc>
</dataroot> 在文件 TEST.XML中
想拿到某個節點的內容,EASY到不得了,[xml]content = Get-Content test.xml
content.dataroot.abc.cde 這樣,就能夠獲得內容了。神了。Conent究竟是什麼,Content.GetType()之後發現,原來還是XmlDocument......PS一句,微軟的東西,功能總做得方便得不得了,但是背後,當然就是犧牲性能啦。
3. 對環境變量,對注冊表的操作
對環境變量和注冊表的操作,也是簡單得不了。$env:COMPUTERNAME ....
4. 一切皆為對象(PYTHON也這樣說過)
這個怎麼表達好呢。你可以這樣做 $files = dir. 然後 $files.GetType()
5. 擴展性超好
繼承一下powershell提供的CMDLET,Snapin,在C#裡寫一下,就可以有自己的SNAPIN了. 然後在POWERSHELL裡面加載一下Installutil,Add-PSSnapin.有人就有疑問,有啥好處呢? 我告訴你,你寫的SNAPIN,比起在POWERSHELL裡定義函數,你能獲得,按TAB的智能提醒,構建自己強大的GET-HELP(http://blogs.msdn.com/powershell/archive/2007/09/01/new-and-improved-cmdlet-help-editor-tool.aspx ),也就是幫助, 實現靈活的使用方式,強大的內置的校驗機制。
最後奉上,POWERSHELL之歌:http://landofsilly.mypodcast.com/2009/01/PowerShell_Wizard-177292.html