匯入 PowerShell 模組
在系統上安裝模組之後,您可能會想要匯入模組。 匯入是將模組載入作用中記憶體的程式,讓使用者可以在其PowerShell工作階段中存取該模組。 在 PowerShell 2.0 中,您可以匯入新安裝的 PowerShell 模組,並呼叫 Import-Module Cmdlet。 在 PowerShell 3.0 中,當使用者呼叫模組中的其中一個函式或 Cmdlet 時,PowerShell 就能夠隱含匯入模組。 請注意,這兩個版本都假設您在PowerShell能夠找到它的位置安裝模組;如需詳細資訊,請參閱 安裝 PowerShell 模組。 您可以使用模組指令清單來限制匯出模組的哪些部分,而且您可以使用 Import-Module
呼叫的參數來限制匯入哪些元件。
匯入 Snap-In (PowerShell 1.0)
模組不存在於PowerShell 1.0中:相反地,您必須註冊並使用嵌入式管理單元。不過,目前不建議您使用這項技術,因為模組通常更容易安裝和匯入。 如需詳細資訊,請參閱 如何建立 Windows PowerShell 嵌入式管理單元。
使用 Import-Module 匯入模組 (PowerShell 2.0)
PowerShell 2.0 會使用適當命名的 Import-Module Cmdlet 匯入模組。 執行此 Cmdlet 時,Windows PowerShell 會在 PSModulePath
變數中指定的目錄中搜尋指定的模組。 找到指定的目錄時,Windows PowerShell 會依下列順序搜尋檔案:模組指令清單檔案(.psd1
)、腳本模組檔案(.psm1
)、二進位模組檔案(.dll)。 如需將目錄新增至搜尋的詳細資訊,請參閱 about_PSModulePath。
下列程式代碼說明如何匯入模組:
Import-Module myModule
假設 myModule 位於 PSModulePath
中,PowerShell 會將 myModule 載入使用中記憶體。 如果 myModule 不在 PSModulePath
路徑上,您仍然可以明確地告訴 PowerShell 在哪裡找到它:
Import-Module -Name C:\myRandomDirectory\myModule -Verbose
您也可以使用 -Verbose
參數來識別從模組匯出的內容,以及正在匯入至使用中記憶體的內容。 匯出和匯入都會限制對用戶公開的內容:差異在於誰控制可見度。 基本上,導出是由模組內的程式代碼所控制。 相反地,匯入是由 Import-Module
呼叫所控制。 如需詳細資訊,請參閱下方 限制匯入的成員。
隱含匯入模組 (PowerShell 3.0)
從 Windows PowerShell 3.0 開始,模組會在命令中使用模組中的任何 Cmdlet 或函式時自動匯入。 這項功能適用於目錄中包含在 PSModulePath 環境變數值中的任何模組。 不過,如果您未將模組儲存在有效的路徑上,您仍然可以使用上述明確 Import-Module 選項載入模組。
下列動作會觸發模組的自動匯入,也稱為「模組自動載入」。
在命令中使用 Cmdlet。 例如,輸入
Get-ExecutionPolicy
會匯入包含Get-ExecutionPolicy
Cmdlet 的 Microsoft.PowerShell.Security 模組。使用 Get-Command Cmdlet 來取得命令。 例如,輸入
Get-Command Get-JobTrigger
會匯入包含Get-JobTrigger
Cmdlet 的 PSScheduledJob 模組。 包含通配符的Get-Command
命令會被視為探索,而且不會觸發模組的匯入。使用 Get-Help Cmdlet 取得 Cmdlet 的說明。 例如,輸入
Get-Help Get-WinEvent
會匯入包含Get-WinEvent
Cmdlet 的 Microsoft.PowerShell.Diagnostics 模組。
為了支援自動匯入模組,即使模組未匯入會話,Get-Command
Cmdlet 會取得所有已安裝模組中的所有 Cmdlet 和函式。 如需詳細資訊,請參閱 get-Command Cmdlet 說明主題。
匯入程式
匯入模組時,會為模組建立新的會話狀態,並在記憶體中建立 System.Management.Automation.PSModuleInfo 物件。 系統會針對匯入的每個模組建立會話狀態(這包括根模組和任何巢狀模組)。 從根模組導出的成員,包括任何巢狀模組匯出至根模組的任何成員,然後匯入呼叫端的會話狀態。
從模組匯出之成員的元數據具有ModuleName屬性。 這個屬性會填入匯出它們的模組名稱。
警告
如果匯出成員的名稱使用未經核准的動詞或成員名稱使用受限制字元,則會在執行 import-Module Cmdlet 時顯示警告。
根據預設,Import-Module Cmdlet 不會將任何對象傳回管線。 不過,Cmdlet 支援 PassThru 參數,可用來傳回匯入之每個模組的 System.Management.Automation.PSModuleInfo 物件。 若要將輸出傳送至主機,用戶應該執行 Write-Host Cmdlet。
限制匯入的成員
使用 Import-Module Cmdlet 匯入模組時,預設會將所有導出的模組成員匯入會話,包括巢狀模組導出至模組的任何命令。 根據預設,不會匯出變數和別名。 若要限制匯出的成員,請使用 模組指令清單。 若要限制匯入的成員,請使用 Import-Module
Cmdlet 的下列參數。
函式:此參數會限制導出的函式。 (如果您使用模組指令清單,請參閱 FunctionsToExport 機碼。
` Cmdlet:此參數會限制導出的 Cmdlet(如果您使用模組指令清單,請參閱 CmdletsToExport 金鑰。
Variable:此參數會限制導出的變數(如果您使用模組指令清單,請參閱 VariablesToExport 機碼。)
別名:此參數會限制導出的別名(如果您使用模組指令清單,請參閱 AliasesToExport 金鑰。