2012-04-19 28 views
4

我是用PowerShell自學的,現在我已經寫了幾個腳本,其中一些腳本非常強大。儘管如此,我擔心我可能沒有按照預期的方式使用PowerShell。這裏是我的兩個主要關注點:PowerShell最佳實踐:處理像高級批處理文件這樣的PowerShell腳本不好嗎?

  1. 從我讀過,PowerShell腳本應該以這樣的方式,他們可以通過管道輸送到書面,也使他們能夠管它們的輸出成別的東西。但是我編寫腳本的方式是完全獨立,並通過Write-Host將所有內容輸出給用戶。

  2. 我讀過的另一件事是當出現錯誤(例如,您嘗試讀取文件但沒有權限)時,應該使用Write-Error而不是Write-Host。不過,我不這樣做。我只是捕獲簡單的英文錯誤消息並將其輸出Write-Host,因此對於不瞭解PowerShell或編碼而不知道如何運行腳本的人員來說,它更便於用戶使用。

這些事情在PowerShell社區中是否被大量地忽視了?如果我向高級PowerShell編碼器展示了其中一個功能強大,評論詳盡且易於閱讀的腳本,他會嘲笑它並將其稱爲垃圾嗎?

我的一些腳本可能對其他人有用,但由於擔心我的風格不正確,所以我毫不猶豫地向任何人展示代碼。任何幫助,將不勝感激。謝謝!

+0

是的,如果您(超過)使用寫入主機,則您在前面的權力,你剩下的只是一個殼。 – OldFart 2012-04-20 15:16:37

回答

2

我不認爲它是一個腳本使用write-output而不是write-host,以便輸出可以通過管道連接到其他腳本等Cmdlet和可能的功能可以期望這樣做,但不是腳本。如果您必須向用戶顯示有關腳本正在執行的操作的信息,則最好使用Write-Host。請注意,如果要將腳本的輸出記錄到日誌文件並在屏幕上顯示給用戶,則使用Write-Output可能會更好。這樣做時,您使用Write-Host不能容易/有效地完成。

Write-Error添加一些額外的信息,IMO是沒有必要的。我很少使用Write-Error。我使用Write-Host -fore red message來指示腳本中的錯誤。這使它很好,很簡單。

但是,當然,我們不能像總是使用寫輸出或總是使用寫主機等語句,這將取決於情況以及如何使用腳本。

2

「如果我發現我的強大,完善的註釋,易於閱讀劇本之一」

IMO最佳做法不能跟着大家所有的時間。我認爲只要您的代碼功能強大,易於閱讀和修改(帶有註釋),並且人們發現它很有用,那麼您不必擔心遵循最佳實踐,但最好在代碼中實施最佳實踐慢。

在SharePoint中,最佳做法是向日志和事件查看器寫入錯誤,但在我的一些項目中,我們會將錯誤詳細信息通過電子郵件發送到特定收件箱,以便立即檢查和糾正問題。我們並沒有遵循這裏的最佳做法,但我們發現這是有用的和有效的。

我們有許多PowerShell腳本,我們的團隊幾乎每天都使用它來在SharePoint服務器中執行快速任務。他們是我們寫的,我們也不遵循所有的最佳做法:)