共用方式為


Windows PowerShell:共用您的指令碼-做簡單

Don Jones

Windows PowerShell v1 的一個限制是它 didn’t 做太多,讓指令碼更容易共用。 確定,您也可以輕易地.ps1 指令碼檔案複製到另一台電腦或甚至郵遞區號,電子郵件傳送到一個同事但您可以做的 VBScript 與前以上一個十年。 如果您的指令碼包含可重複使用的函式,但是,凡是收到來自您就必須知道如何點來源它,或會得到實際需要修改才能執行這些函式。

所有在所有它是可接受的情況 — 即使 wasn’t 理想。 因為這些額外的檔案必須要以手動方式載入到殼層来使用的指令碼,這種情況變得較不接受的自訂格式檢視或類型的副檔名所伴隨的指令碼。

Windows PowerShell v2 不過,我們移到一個幾乎理想的情況下感謝至模組的簡介。

殼層善良的獨立區塊 (Chunk)

A 模組 是只要集合關聯到另一個檔案。 有的模組的兩大類:二進位和指令碼。

A 二進位檔 模組包含一或多個 DLL 檔案,從 C# 或 Visual Basic 等的 Microsoft.NET Framework 語言編譯。 v1] 天內我們呼叫這些 PSSnapins,並且實際撰寫一個在 Visual Studio hasn’t 變更很多。 Snapins,但是,必須也撰寫安裝程式使用殼層登錄您的 DLL。 含有一個模組沒有安裝是必要的。 而是,模組會伴.psd1 檔案 — *模組資訊清單。*資訊清單是應載入指出哪些 DLL(s) 只是一些 XML。 資訊清單也可以指定伴隨的型別延伸檔案 (.ps1xml) 或檢視檔案 (format.ps1xml)。

這裡 ’s 它的運作方式:模組必須安裝在 Windows PowerShell \modules 資料夾中的子目錄中。 根據預設值,這是 c:\windows\system32\windowspowershell\v1.0\modules 中。 所以,模組,名為 「 MyModule 」 會進入 c:\windows\system32\windowspowershell\v1.0\modules\mymodule,而且資訊清單檔會 mymodule.psd1。 本單元的相關的任何檔案會通常分成不同的保持獨立的所有內容的同一個資料夾。

若要載入模組,您只需執行 匯入模組 MyModule. 會在殼層中尋找 \modules 資料夾預設 (雖然您也可以將完整的路徑傳遞至 匯入模組 是否您的模組位於其他地方),看見.psd1 檔案存在、 讀取它,並載入參考的工作流中的檔案。 散發模組就簡單:只需 zip 向上所有檔案,然後再將.zip 檔複製到另一部電腦 — 沒有必要的安裝。

回復執行重做您自己的模組

因此如何確實本說明您散發您的指令碼更容易? 模組 的第二個型別指令碼模組,是答案。 這是指令只是一般 Windows PowerShell 碼,與.psm1 副檔名,而不是平常.ps1 副檔名。 將 mymodule.psm1 放入 \modules 資料夾可讓您執行 匯入模組 MyModule,與您的指令碼會執行。

通常,指令碼模組包含 完全 的函式。 也就是匯模組時沒有任何實際執行 — 在指令碼模組中的函式會載入至殼層和,就可以使用整個殼層。 假設您有一個指令碼模組,看起來像這樣:

Function Get-Inventory {
 # (some code goes here)
}
Function Test-Connectivity {
 # (some code goes here)
}
Function Write-Inventory {
 # (some code goes here)
}

匯入這個模組會使 取得庫存、 測試連線能力 and 寫入物品欄 函式可用在殼層整個就像是 Cmdlet (在實際上下個月我告訴您如何撰寫一個函式的行為就像 「 真實 」 的指令程式幾乎完全)。 您的函式甚至可併入註解說明 (這我在 中示範我最後一欄),讓某人可以匯入模組並執行 協助取得庫存 以檢視使用該函式的指示。

有時您會希望有點隱私權

有時您可能需要複雜的指令碼模組包含適合只由其他函式而非使用者使用的函式。 比方說,我可能會想 測試連線能力 and 寫入物品欄 為 「 私人 」 至模組。 這表示會由 呼叫取得詳細目錄,但我 don’t 希望他們由殼層的使用者直接呼叫。

預設匯入模組 imports 所有項目 使每個函數的可以看得見到殼層使用者模組中。 您可以只指定的函式清單覆寫該行為 成為可見的 ; 其他項目將會隱藏殼層使用者。 如果要執行這項操作,只執行 匯出 ModuleMember 結尾的指令碼模組:

匯出 ModuleMember –function get 庫存

您也可以匯出指令程式、 變數和別名會定義您的指令碼,如有需要。 Run 協助匯出-ModuleMember or see 匯出 ModuleMember 如需詳細資訊。

模組缺點

為我,唯一 bummer 有關 v2 模組是殼層好像有為他們,只能有一個預設位置,而且該位置是在 Windows 系統資料夾之下 — 其中 isn’t 您想要修改的習慣成取得的東西。 但是我再看過 PSModulePath 環境變數,並發現殼層也會查看您的文件] 資料夾下稱為 WindowsPowerShell\Modules,子資料夾,並這是我現在讓所有我所撰寫的模組。

在未來您也可能會看到設計用來下載其他模組從網際網路為基礎的儲存機制,不與梨功能在 Unix 系統中使用不同的指令程式。 這類 Cmdlet 會是比較容易下載到您的文件] 資料夾或其他一些非 OS 位置,擁有殼層搜尋您的文件] 資料夾對於模組而言是智慧型的預設值。

到處都模組的模組

因為它們 don’t 需要安裝,才能被 「 看到 」 殼層,正在使用模組更多。 在實際上在 Windows Server 2008 R2 幾乎每一個 Windows PowerShell 延伸模組封裝成模組 — 被用於自動化 Windows 伺服器備份 (執行 PSSnapin 唯一的例外取得 PSSnapin –registered 來查看是否安裝在伺服器上)。 更多的協力廠商程式碼是被當作模組,太,包括存取社群的程式碼儲存機制在 的 Cmdlet 出貨PoshCode.org.

在事實如果 ’re 死硬 Windows PowerShell 使用者撰寫您自己的指令程式有興趣,但是 don’t 要深入 Visual Studio,進階功能的組合中的.NET Framework 程式設計 (一次,成為下個月 ’s 欄) 並模組可讓您能夠撰寫您自己殼層 「 snapins 」 完全在指令碼中的。 只要封裝進階的功能 — 哪些看起來和作用類似 Cmdlet — 到指令碼模組,和您有一個簡單散佈程式庫的可重複使用的程式碼。

現在通常可以使用 Windows PowerShell v2

雖然運送預先安裝 Windows Server 2008 R2 與 Windows 7 Windows PowerShell v2 — 及其同一系列文件管理架構元件 — 現在是供 Windows XP、 Windows Server 2003、 Windows Vista 及 Windows Server 2008。 只要造訪 support.microsoft.com/kb/968929 以取得使用任何作業系統的 [下載] 連結。 在大多數情況下這應該與您的 v1 指令碼相容 ; 我未來的資料行就會假設使用 2.0]。

Don Jones * 是集中技術和 Windows PowerShell 與在其他技術的回答疑問 founder * ConcentratedTech.com. 他也 ’s 的作者 Nexus.Realtimepublishers.com可使其成為許多他書籍以供使用免費的電子版本。

相關的內容

·      Windows PowerShell:PowerShell] 與 [Active Directory

·      Windows PowerShell:向左篩選、 格式化右

·      Windows PowerShell:保持安置的