PowerShell 有模組化的概念,模組化的概念幫助開發者寫出比較容易維護的程式,但在 PowerShell 的世界裡,模組有 4 種,雖然大多數的時候你只會使用某一種做開發,不過知道一下這 4 種模組的差別,能幫助我們理解一下所使用到的模組背後,他是怎麼運作的。
PowerShell 模組有 4 種形式:
- Script Modules 指令碼模組
- Binary Modules 二進制模組
- Dynamic Modules 動態模組
- Manifest Modules 模組資訊清單
Script Module 指令碼模組
這是最主要,也是最常用到的模組模式,對於 PowerShell 來說,只要副檔名是 .psm1
就是模組檔,而裡面的內容程式碼就是一般我們在寫的 PowerShell 指令碼,沒有特別規定裡面要怎麼寫,這個模組模式也是第一個需要學習使用的模組方式。
因此我們可以使用 Import-Module
指令來匯入 .psm1
檔,將裡面撰寫的 Function 方法載入到當前的 PowerShell 執行階段中。
更多關於如何撰寫 PowerShell 指令碼模組,請參考官方文件。
更多關於匯入
.psm1
檔的方法,請參考簡單使用 Import-Module 匯入 PowerShell 模組指令碼這篇文章。
Binary Module 二進制模組
PowerShell 使用 .NET Framework 來開發,而 PowerShell Core 則是使用 .NET Core 來開發的,因此 PowerShell 可以使用 Import-Module
指令來匯入 C# 開發的 .dll
檔,因為 .dll
檔已經編譯過了,所以使用這種模組檔的執行效能會比 Script Module 還好。
通常這種模組模式會由開發者建立、使用,而非 IT Pro。
更多關於如何撰寫 PowerShell 二進位模組,請參考官方文件。
更多關於 PowerShell 載入 dll 檔的方法,請參考在 PowerShell 中執行 C# 程式碼或 DLL 檔的方法這篇文章。
Dynamic Module 動態模組
當你在 PowerShell 指令碼中使用 New-Module
指令時,你就會在當前 PowerShell 執行階段建立一個暫時的模組,這種模組模式不會儲存任何檔案到系統中,這個模組模式其實用到的機會很少。
Manifest Module 模組資訊清單
這個模組模式不包含可執行的 PowerShell 程式碼,主要是拿來描述另一個模組檔。通常會用 New-ModuleManifest
指令來產生 .psd1
PowerShell 資料檔。
更多關於如何撰寫 PowerShell 模組資訊清單,請參考官方文件。
後記
因此要開發 PowerShell 模組,原則上會使用 Script Module 指令碼模組的模式,然後再加上 Manifest Module 模組資訊清單來增加模組的描述資訊,若有 C# 開發者提供好用的 dll 給 PowerShell 使用,則將該 dll 當作 Binary Module 二進制模組,在 PowerShell 執行環境中使用。
參考資料: