PowerShell函數的基本指南與特性
雖然Windows PowerShell能以多種方式給管理員帶來好處,它的擴展性可能是它最重要的屬性。這包括PowerShell函數,這些小且簡單的任務工具由函數框內的命令組成。運用函數使得調試更簡單,也通過讓你可以將函數從一個腳本轉向另一個來使編寫的代碼更少。
推薦專題:Windows中的腳本技術-Windows Powershell
那么什么時候PowerShell函數最有用呢?以下是你需要記住的三個基本指南:
- 如果你一再地重復相同的代碼塊,例如在電腦上檢查多個服務的代碼塊。在這里,你可以運用函數來執行檢查,在所有服務器上運行它,也可以更高效地檢測到代碼錯誤。
- 如果你在其它腳本中運用一個專用代碼。例如,如果你編寫一個遞歸解析塊,你會想要再利用該邏輯。
- 如果該代碼在腳本之外有用。這和之前的指南有些許不同,好的例子就是ping-server函數。
一般說來,編寫代碼時考慮再利用常常是個不錯的想法,尤其是函數就有再利用的設計時。因此,除違約之外,要考慮函數怎么用、用在哪里能幫助建立它們本該有的參數,這一點很重要。
考慮再利用時,最好是盡最大可能地考慮周全并避免硬編碼。此外,編寫函數時所有數據都應該通過參數。雖然為參數使用缺省值也說得通,你應該讓函數調用者無須修改函數就能指定其它選項。這也是黑箱測試遲早有用的地方,它可以在不同的環境中確定一條函數的可用性。就這一點而言,考慮原始函數的所有變更以及這些變更如何影響腳本整體很重要。舉例來說,在PowerShell V1中,我常常試著用我自己的轉換器執行verbose和whatif命令。在V2中,這個問題已經解決了。
設計函數時你還應該考慮回環和處理邏輯。例如,如果你有處理服務器的邏輯,那么你應該在函數外部維持該邏輯。沒有必要為所有函數調用執行它。另一方面,如果你擁有的邏輯明顯是函數域,那么你不需要移除它,只要應用調用腳本就行了。
優秀PowerShell函數的特性是什么?
好的函數都是為特定需求而生然后被棄用,但是所有的好函數都有一些共性。以下是其中的一些特性:
優秀PowerShell函數特性一:定義良好的參數
一條函數需要非常清楚它預期要返回什么數據。你可以通過應用指定參數來完成該過程。如果你顯然有指定值要處理,那么確保它在函數中清晰。完成此過程的一個好方法是通過向要求的$ThisParam分配參數的缺省值。
優秀PowerShell函數特性二:一致性和預期輸出
你不用猜測函數中會有什么數據,這一點很關鍵,你寧愿返回的數據是預期的。設計函數所說它返回一種或多種簡單數據類型,如線型、日期時間型或布爾運算(Boolean)。但注意,不要用編寫輸出編寫的意外數據或變量中沒有抓取的數據污染了這個數據流。
優秀PowerShell函數特性三:獨立性
該函數不應該依賴于來自腳本的任何變量。如果這條函數需要從外部輸出,把它變成一個參數。
優秀PowerShell函數特性四:可移植性
一條函數最簡單重要的職能就是可移植性。如果你沒有計劃要再利用該代碼,你也可以編寫內聯的代碼??梢浦残缘年P鍵因素是確保你的可變名稱不會與調用函數沖突。就這一點而言,你可以用$my或$func給它們做序。
【編輯推薦】