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