2009-07-22 97 views
8

對於某些監控應用程序和需要安排輪詢某些服務的任務,我們通常使用控制檯應用程序,該應用程序又調用業務層中的某些方法或輪詢文件位置/ ftp位置。PowerShell腳本比控制檯應用程序有什麼好處?

對於我正在執行的另一項任務,我開始使用Powershell並留下深刻的印象,這讓我想到了Powershell腳本和控制檯應用程序的好處。

似乎事實上,powershell腳本可以在不用重新編譯的情況下進行編輯,這使得它對於潛在更改具有優勢,但必須存在我沒有看到的缺點。

那麼人們會建議什麼時候交換一個Powershell腳本的控制檯應用程序?

回答

7

我認爲更好的方式來思考這個問題是,你什麼時候選擇控制檯應用程序?我認爲PowerShell是一個強有力的競爭者。如果你不關心運行時的出血速度,分發給第三方(PowerShell還不是很標準),或者保護源代碼,那麼我認爲PowerShell是一個強有力的競爭者。

順便說一下,PowerShell可以操作COM對象,因此就任務自動化而言,它可以很好地作爲.NET和基於COM的基礎架構之間的粘合代碼。

2

那麼,你的情況似乎是Powershell設計的東西幾乎完美的契合。我能想到的唯一可能的缺點是Powershell可能會稍微慢一點,因爲它的解釋和編譯並沒有針對速度進行優化,而是易於使用。

1

您還應該考慮「應用程序」的大小。如果一個單一的小文件可以管理任務,那麼PowerShell是一個很好的解決方案。一旦你超越了這個範圍,那麼你就需要提出有關腳本與典型應用程序代碼的可維護性和可理解性的問題。 (源代碼控制不應該輸入等式,因爲兩者都應該存儲在那裏!)

5

對我來說,最大的好處就是失去編譯過程和執行二進制文件。我會給你一個例子。我有一個應用程序,它使用Visual Studio專用程序集文件夾中的某些組件,應用程序中的二進制文件以及我們的編譯過程中運行的單元測試。當VS 2008推出時,我必須改變資源,重新編譯,然後將不得不將二進制文件推出到我們所有的構建服務器。我決定這是愚蠢的,並切換到PowerShell,所以現在我的腳本計算出哪個版本的vsts被安裝並加載到最高版本的dll中。現在,您可以在使用反射和後期綁定以及東西的應用程序中執行此操作,但在PowerSHell中它更容易,當我們添加二進制文件或刪除需要的二進制文件時,每個發佈編輯器都可以在文本編輯器中快速修改腳本。對於小型室內應用程序,我總是使用PowerSHell ...

1

不要低估本質上的免費參數解析的價值,在V2中使用高級功能會更好。想想你寫的所有小控制檯應用程序,以及多少代碼是參數解析還是做一些有趣的事情。還想一想你如何處理參數解析?你處理位置與命名參數嗎?參數驗證如何?默認參數值?響應文件如何?儘管Posh不支持字面意義上的響應文件,但在V2中,有一個splatting運算符,它允許您將參數打包到數組或哈希表中 - 非常類似的功能。

OTOH在某些時候,如果我的腳本開始變得巨大,我正在調用。.NET代碼多於cmdlet,我開始考慮編寫一個cmdlet來完成這項工作。 VS調試器甚至比V2調試功能還要好。

相關問題