2010-09-01 60 views

回答

4

PowerShell可以做很多.NET控制檯應用程序可以做的事情,但它仍然是一種腳本語言。但它比批處理文件語言或VBScript/JScript好得多。它的優點包括能夠使用類UNIX的管道和過濾器,但使用對象而不是啞文本。它也可以創建CLR和COM對象並調用它們的屬性和方法。然而,如果你正在編寫任何複雜的東西,那麼編寫一個編譯好的程序會更好,因此你可以在編譯時找到錯誤並擁有更好的IDE。另外,如果您想運行PowerShell腳本,則PowerShell必須安裝在運行它的計算機上。

+0

所以,我真不該比較它與.NET應用程序,但批處理文件和VBScript? – 2010-09-01 16:34:43

+0

正確,但它也是真正簡單的,短暫的.NET控制檯應用程序的一個很好的選擇(例如,一個簡單的文件操作)。 – Jacob 2010-09-01 16:41:56

10

PowerShell是一個交互式shell,如KornShell,Bash和er CMD.exe。就像這些shell一樣,它支持腳本語言(KSH,Bash,Batch)。然而,PowerShell建立在.NET之上,並公開.NET類型,並允許您創建和操作多種.NET類型。所以你可以使用PowerShell來構建腳本,可以做一個典型的.NET控制檯應用程序可以做的。

編寫小型實用控制檯應用程序時需要考慮的一個因素是,您需要花費多少精力來編寫解析&使用代碼,而不是實現exe基本目的所需的代碼。因爲PowerShell提供了一個參數解析引擎,它具有很多很好的功能:命名/位置參數,必需/可選參數,參數默認值,參數名稱的部分指定等,我已經轉而編寫了很多實用程序作爲PowerShell腳本。

PowerShell 2.0在這方面增加了更多的功能(驗證屬性等)和高級功能。您可以輕鬆將「手冊頁」編寫爲腳本或高級功能的註釋。儘管我曾經花費了50-80%的時間來處理C#控制檯應用程序中的片狀,非標準(是/或兩者兼有?)參數解析代碼,我讓PowerShell爲我處理。不過,我相信雅各布斯說,要求更低級.NET代碼的複雜任務在C#/ VB/Visual Studio中更容易正確(靜態編譯時檢查)和調試。

我很想看到通過BCL中的一組.NET類型公開的PowerShell參數分析功能,以便您可以編寫控制檯應用程序並獲取PowerShell的分析功能。很久以前,我使用了一個名爲Genghis的開源組件,但我認爲它已被棄用。在.NET 4.0測試版的某一時刻,命令行解析器出現在框架中,但在RTM之前被刪除。我不認爲這個命令行解析器與PowerShell有任何連接 - 它應該有IMO。這可能是一件好事,它被拉了。

2

Powershell的優勢在於具有與Microsoft產品特有的簡單性和互操作性。例如,在Exchange 2007和2010中,如果不使用Powershell,則無法修改某些屬性。直到SP2,你甚至可以管理Exchange 2007中的公共文件夾。

其次,我非常喜歡PoSh中的所有東西都是一個對象。就像在一個CSV文件中讀取事情就這麼簡單

$csv = import-csv c:\MyUsers.csv 

你現在有一個索引對象,通過它可以訪問每一列的列頭。在許多其他語言中,afaik並非易事。

$csv[1].UserName

相關問題