2008-08-12 110 views
26

Windows PowerShell去年出來,並得到了很多.net博客的好評(想起Hanselman)。它似乎被吹捧爲一個偉大的新實用程序,它以某種方式使您在命令行上所做的所有事情都變得更加容易,並與.Net集成。但是,我讀到的內容越多,它對IT專業人員來說就越好,對開發人員來說也沒什麼用處。你如何使用PowerShell?

您是否在開發工作中使用PowerShell?如果是這樣,怎麼樣?它值得學習嗎?

注意:在看到迄今爲止的回覆後,我認爲可以得出結論:PowerShell對於.Net開發人員非常有用。然而,下面沒有答案,我可以將其標記爲答案(所以請原諒我不這樣做)。我正在對每個我發現有用的答案進行投票。

回答

0

雖然我還沒有學會如何充分利用它,但我是一個粉絲,因爲它支持大多數(如果不是全部)我熟悉的使用命令行進行導航的Unix命令。如果你有* nix的經驗並且正在Windows上開發,我會建議使用它,因爲你只需要記住一組命令。

然而,我說了一粒鹽。當涉及到構建和編譯時,我使用命令行功能。

1

我在實際的開發工作中使用它很少。我用它來自動設置虛擬目錄並執行一個scipt,在我們所有的開發機器上使用相同的設置設置IIS

0

我將它用於IT Pro類型的東西一個公平的位(它很棒),但不要以爲我已經用它開發了很多東西 - 偶爾用於快速嘗試類似String.Format的東西。我將要做的是爲我們的一些應用程序開發powershell命令行開關 - 允許管理員通過PowerShell執行像用戶管理這樣的任務,但我不認爲這真的是你的意思。

3

它從來沒有被用作我的開發角色的一部分,但是我偶爾會得到一個任務,我會編寫一個自動化的小程序,現在我強制自己在PowerShell中執行操作,而且花費的時間更少。

例如,我最近使用xcopy將數百萬個文件從一臺服務器移動到另一臺服務器,並忘記設置該屬性以保留文件的創建日期。 Powershell來拯救。在十分鐘內,我編寫了一個腳本,用於複製創建日期而不必重新複製文件。

+0

哇!你能告訴我們劇本嗎? – 2013-02-04 05:29:07

1

就我個人而言,我使用Python來自動化任務,如果需要使用WMI。我認爲這個組合涵蓋了大部分我的的需求。

我測試過PowerShell,看起來對我來說很好,但它不值得學習一個全新的工具。除此之外,如果您需要或想要(PowerShell Live)或甚至recipes以完成任務,而無需爲自己傳遞整個學習曲線,那麼掌握PowerShell的在線資源非常豐富。

12

這絕對值得學習。你有沒有轉換文字?你有沒有操縱XML?你有沒有自動化任何東西?簡單的例子。有人給你一個逗號分隔的文件,你需要從它中拉出一些字段導入到其他工具/數據庫或爲你的程序創建一些列表。

如果CSV在該文件的第一行的字段名,你可以在PowerShell中執行以下操作:

$Data = import-csv "something.csv" 

您可以使用字段名,然後請參閱您的數據。如果您有一個名爲SSN的字段,那麼您可以說$ Data [n] .SSN。您也可以將import-csv命令用於處理數據的東西,包括將其導出爲XML/html或任何您需要的東西只需幾條命令。 Powershell充滿了這樣的東西。

這是一個工具,可以讓您在工作站和服務器上大量訪問各種東西,包括完整的.NET庫。這是一種不針對某種人的工具。也許這只是管理員類型已經很快意識到它是多麼有用。我每天都使用它。

要真正回答問題,我使用它來自動化我每天做的事情。我試圖使它成爲我的單一腳本語言,替換我在perl,python,vbscript,.bat/.cmd中執行的操作,還有一個關閉我將創建的小型實用程序/轉換程序。

5

我剛剛完成託管PowerShell運行時的項目的第1版,以在遠程系統上執行任務。我完全不同意PowerShell不是開發者的工具。

作爲基於.NET的產品,它是.NET編程的直接模擬。整個.NET程序可以在PS中進行原型開發,以及用於測試方法功能的小型線程等。 PS的語言架構師專門將PS的語法設計爲接近C#,意味着在編寫PS腳本和C#代碼(我最近必須做的事情)時,上下文切換非常少。使用PS,您正在使用.NET語言贏得您的知識。

作爲一種自動化工具,它非常棒。它可以本地訪問WMI,ADO,ADSI,.NET,COM,並且可以點焊以與其他任何東西一起工作。僅憑這一點,就可以使任何Windows自動化更輕鬆,更強大訪問系統的數量被其他一些語言(VBscript,Python)所佔用,但是語言的易用性和.NET框架的好處意味着某些PS腳本將現有代碼(代碼重用)連接在一起,而不是浪費你的時間寫另一個文件壓縮例程(例如...)

已經有一些項目正在製作構建工具(psake想到),使開發人員的生活更輕鬆。像Powershell社區擴展這樣的項目展示了日常開發者可以實現的強大的擴展功能。我同意上面的一些海報,我認爲任何設置構建環境或使用開發任務的數據都可以做到,如果不是更快/更容易/更好,也可以使用PS完成,但同樣如此。

詹姆斯

0

這在我看來,WPS是一種方法,使您的生活更容易做你需要的東西。我不認爲你會發現將WPS集成到FireFox或Quicken中,但是這些團隊可能會用它來完成這些事情......簡而言之,「WPS不會讓你的程序變得簡單,WPS使你的程序變得更容易。」 ; o)

12

我是交易管理員,剛開始在「開發」世界,但我發現PowerShell可以通過多種方式對開發人員非常有用。

  1. 任務自動化 - >李霍姆斯(在PowerShell的團隊的開發人員)公佈證據的概念叫做BgShell,這基本上在Windows主辦的PowerShell運行時形成的應用程序,聽了擊鍵和拉開序幕行動基於它們編寫在PowerShell中。它還包括一些剪貼板自動化。
  2. 快速訪問.NET框架。您不必編譯和運行某些功能,或使用其他程序(如Snippet Compiler)來測試某些功能。將程序集加載到PowerShell會話中並與其交互。您可以獲得PowerShell的所有可發現性(如Get-Member)來探索您的對象。
  3. 易於構建特定於域的語言。 James Kovacs使用PowerShell編寫了一個名爲Psake的簡單構建腳本語言。
  4. 它可以爲您的應用程序提供一種腳本語言。由於PowerShell是09通用工程標準的一部分,因此許多Microsoft應用程序都會爲PowerShell提供接口,並且熟悉語言的語法將會增加。您可以通過在應用程序中嵌入PowerShell運行時並利用這些知識爲用戶提供腳本界面,並選擇他們將訪問的對象。
  5. 同樣,如果您需要爲應用程序創建命令行界面,PowerShell提供瞭解析參數和其他基本任務所需的大部分底層管道,只留下業務邏輯供您編寫,併爲其他應用程序提供一致的界面(例如,如果您有需要管理的用戶帳戶(尚未與Active Directory集成),管理員可以(使用Quest AD Cmdlet和您的應用程序界面)Get- QADUser | New-MyApplicationUser並完成Exchange 2007團隊做得非常好,所有功能都基於PowerShell cmdlet,GUI調用cmdlet並向用戶顯示正在運行的內容,以便他們可以基於此構建腳本
  6. 這真是太酷了!大約250行(包括評論),Rob Foust和Jeff Hicks在PowerShell中撰寫了一個網絡嗅探器。比WinDump更易於使用輕量級故障排除。
  7. 社區 - 圍繞PowerShell有一個很好的社區,包括開發人員。在PowerShellCommunity.org上了解更多信息。
2

@EdSwangren - 如果您必須主要在Windows平臺上工作並在.NET空間中工作,我會全心全意地推薦花時間學習PowerShell。它可以利用您現有的.NET體驗和代碼,與COM,WMI和ADSI協同工作。它允許您訪問Windows平臺上的所有內容(這僅僅是V1)。 V2正在積極開發(CTP2現在可用),並將包括更多遠程處理,STA線程以及其他許多改進。

許多供應商還支持PowerShell - from/n軟件提供網絡cmdlet,Citrix和VMWare通過PowerShell提供管理API。

6

你可以討厭Powershell,但它仍然可以對你非常有用。我將它用於小而重要的單行事物類型或非常小的腳本。它實際上無法與C#進行比較,只要我切換到C#時有任何複雜性或重要的潛在重用就可以了。另外,重要的是,Powershell非常時髦,我想每次都從頭開始重新創建解決方案,否則我會忘記其中有很多的怪癖。我聽說別人也這麼說!什麼它是真正的好

例子:

  1. 特設的文本處理。有時候人們會給我一個大型的數據或者SQL文件,他們希望它能夠以一種不同的形式操作,有時候會以非常複雜的方式操作。這本身爲我節省了不可思議的時間。它通常涉及很多獨特的單行和中間文件。現在人們知道我可以做到這一點,他們傾向於將這些項目交給我。或者在某些情況下,他們如此驚歎以至於他們自己學習Powershell。

  2. 當我在一個客戶站點,迫切需要自動化一些東西時,它是我可以和/或被允許獲得的唯一工具。

  3. 小腳本登錄到網站,並導航到任何網頁我感興趣的還是工作。我從來沒有手動登錄到我正在開發的網站。微不足道的,但這是一個少煩人重複腦死亡任務,我需要擔心。

  4. 一行程序到各地複製文件和項目,並搜索和替換。

  5. 小腳本來完成建造,如果涉及任何不尋常的併發症。

  6. 等你必然會有小怪癖在你的系統,你需要停止/啓動服務來解決別的東西,或什麼的。

0

我用它來自動化儘可能多的事情,我可以。一個示例是Web UI Automation,以簡化應用程序開發/測試。

我也用它來爲各種程序生成隨機輸入文件。例如,一個應用程序需要一個XML文件,並且我有一個腳本來基於當前時間使用隨機值和唯一ID構建該文件。

我不大量使用它,但我每天都在使用它。

0

我用時髦的任何「repetita」工作我已經做了管理網絡,域,計算機,AD用戶,文本編輯,文件搜索,文件服務器遷移,監控,也有樂趣!

0

我用它進行多個過程。以及一些CMD無法做到的事情。