Import-Module
將模組新增到目前的工作階段。
Syntax
Import-Module
[-Global]
[-Prefix <String>]
[-Name] <String[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <Version>]
[-MaximumVersion <String>]
[-RequiredVersion <Version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
Import-Module
[-Global]
[-Prefix <String>]
[-Name] <String[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <Version>]
[-MaximumVersion <String>]
[-RequiredVersion <Version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
-PSSession <PSSession>
[<CommonParameters>]
Import-Module
[-Global]
[-Prefix <String>]
[-Name] <String[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <Version>]
[-MaximumVersion <String>]
[-RequiredVersion <Version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
-CimSession <CimSession>
[-CimResourceUri <Uri>]
[-CimNamespace <String>]
[<CommonParameters>]
Import-Module
[-Name] <string[]>
-UseWindowsPowerShell
[-Global]
[-Prefix <string>]
[-Function <string[]>]
[-Cmdlet <string[]>]
[-Variable <string[]>]
[-Alias <string[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-MinimumVersion <version>]
[-MaximumVersion <string>]
[-RequiredVersion <version>]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <string>]
[<CommonParameters>]
Import-Module
[-Global]
[-Prefix <String>]
[-FullyQualifiedName] <ModuleSpecification[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
Import-Module
[-Global]
[-Prefix <String>]
[-FullyQualifiedName] <ModuleSpecification[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
-PSSession <PSSession>
[<CommonParameters>]
Import-Module
[-FullyQualifiedName] <ModuleSpecification[]>
-UseWindowsPowerShell
[-Global]
[-Prefix <string>]
[-Function <string[]>]
[-Cmdlet <string[]>]
[-Variable <string[]>]
[-Alias <string[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <string>]
[<CommonParameters>]
Import-Module
[-Global]
[-Prefix <String>]
[-Assembly] <Assembly[]>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
Import-Module
[-Global]
[-Prefix <String>]
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-SkipEditionCheck]
[-PassThru]
[-AsCustomObject]
[-ModuleInfo] <PSModuleInfo[]>
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
Description
Cmdlet 會將 Import-Module
一或多個模組新增至目前的會話。 從 PowerShell 3.0 開始,當您在模組中使用任何命令或提供者時,會自動將已安裝的模組匯入會話。 不過,您仍然可以使用 Import-Module
命令來匯入模組。
您可以使用喜好設定變數停用自動模組匯入 $PSModuleAutoloadingPreference
。 如需變數的詳細資訊 $PSModuleAutoloadingPreference
,請參閱 about_Preference_Variables。
模組是包含可在PowerShell中使用的成員的套件。 成員包括 Cmdlet、提供者、腳本、函式、變數和其他工具和檔案。 在匯入模組之後,您可以在工作階段中使用模組成員。 如需模組的詳細資訊,請參閱 about_Modules。
根據預設, Import-Module
匯入模組匯出的所有成員,但您可以使用 Alias、 Function、 Cmdlet 和 Variable 參數來限制要匯入的成員。 NoClobber 參數可防止Import-Module
匯入與目前會話中成員同名的成員。
Import-Module
只會將模組匯入目前的會話。 若要將模組匯入至每個新的工作階段,請將命令新增 Import-Module
至您的PowerShell配置檔。 如需設定檔的詳細資訊,請參閱 about_Profiles。
您可以在遠端電腦上建立 PSSession ,以管理已啟用 PowerShell 遠端功能的遠端 Windows 電腦。 然後使用的 Import-Module
PSSession 參數匯入遠端電腦上安裝的模組。 當您在目前的會話中使用匯入的命令時,命令會在遠端電腦上隱含執行。
從 Windows PowerShell 3.0 開始,您可以使用 匯Import-Module
入 Common Information Model (CIM) 模組。 CIM 模組會在 Cmdlet 定義 XML (CDXML) 檔案中定義 Cmdlet。 此功能可讓您使用在非 Managed 程式代碼元件中實作的 Cmdlet,例如以 C++ 撰寫的 Cmdlet。
對於未啟用 PowerShell 遠端功能的遠端電腦,包括未執行 Windows 作業系統的電腦,您可以使用 的 Import-Module
CIMSession 參數從遠端電腦匯入 CIM 模組。 匯入的命令會在遠端電腦上隱含執行。 CIMSession 是遠端電腦上的 Windows Management Instrumentation (WMI) 連線。
範例
範例 1:將模組的成員匯入目前的會話
此範例會將 PSDiagnostics 模組的成員匯入目前的會話。
Import-Module -Name PSDiagnostics
範例 2:匯入模組路徑所指定的所有模組
本範例會將環境變數所 $env:PSModulePath
指定路徑中的所有可用模組匯入目前的會話。
Get-Module -ListAvailable | Import-Module
範例 3:將數個模組的成員匯入目前的會話
此範例會將 PSDiagnostics 和 Dism 模組的成員匯入目前的會話。
$m = Get-Module -ListAvailable PSDiagnostics, Dism
Import-Module -ModuleInfo $m
Cmdlet Get-Module
會取得 PSDiagnostics 和 Dism 模組,並將物件儲存在 變數中 $m
。 當您取得尚未匯入會話的模組時,需要 ListAvailable 參數。
的 Import-Module
ModuleInfo 參數是用來將模組匯入目前的會話。
範例 4:匯入路徑指定的所有模組
此範例會使用明確的路徑來識別要匯入的模組。
Import-Module -Name c:\ps-test\modules\test -Verbose
VERBOSE: Loading module from path 'C:\ps-test\modules\Test\Test.psm1'.
VERBOSE: Exporting function 'my-parm'.
VERBOSE: Exporting function 'Get-Parameter'.
VERBOSE: Exporting function 'Get-Specification'.
VERBOSE: Exporting function 'Get-SpecDetails'.
使用 Verbose 參數會導致 Import-Module
在載入模組時報告進度。
如果沒有 Verbose、 PassThru 或 AsCustomObject 參數, Import-Module
則匯入模組時不會產生任何輸出。
範例 5:限制匯入會話的模組成員
此範例示範如何限制哪些模組成員匯入會話,以及此命令對會話的影響。 Function 參數會限制從模組匯入的成員。 您也可以使用 Alias、 Variable 和 Cmdlet 參數來限制模組匯入的其他成員。
Cmdlet 會 Get-Module
取得代表 PSDiagnostics 模組的物件。 ExportedCmdlets 屬性會列出模組匯出的所有 Cmdlet,即使它們並非全部匯入也一樣。
Import-Module PSDiagnostics -Function Disable-PSTrace, Enable-PSTrace
(Get-Module PSDiagnostics).ExportedCommands
Key Value
--- -----
Disable-PSTrace Disable-PSTrace
Disable-PSWSManCombinedTrace Disable-PSWSManCombinedTrace
Disable-WSManTrace Disable-WSManTrace
Enable-PSTrace Enable-PSTrace
Enable-PSWSManCombinedTrace Enable-PSWSManCombinedTrace
Enable-WSManTrace Enable-WSManTrace
Get-LogProperties Get-LogProperties
Set-LogProperties Set-LogProperties
Start-Trace Start-Trace
Stop-Trace Stop-Trace
Get-Command -Module PSDiagnostics
CommandType Name Version Source
----------- ---- ------- ------
Function Disable-PSTrace 6.1.0.0 PSDiagnostics
Function Enable-PSTrace 6.1.0.0 PSDiagnostics
使用 Cmdlet 的 Get-Command
Module 參數會顯示從 PSDiagnostics 模組匯入的命令。 結果會確認只 Disable-PSTrace
匯入和 Enable-PSTrace
Cmdlet。
範例 6:匯入模組的成員並新增前置詞
本範例會將 PSDiagnostics 模組匯入目前的會話、將前置詞新增至成員名稱,然後顯示前置成員名稱。 的 Import-Module
Prefix 參數會將 x 前置詞新增至從模組彙入的所有成員。 前置詞只適用於目前會話中的成員。 它不會變更模組。 PassThru 參數會傳回代表匯入模組的模組物件。
Import-Module PSDiagnostics -Prefix x -PassThru
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 6.1.0.0 PSDiagnostics {Disable-xPSTrace, Disable-xPSWSManCombinedTrace, Disable-xW...
Get-Command -Module PSDiagnostics
CommandType Name Version Source
----------- ---- ------- ------
Function Disable-xPSTrace 6.1.0.0 PSDiagnostics
Function Disable-xPSWSManCombinedTrace 6.1.0.0 PSDiagnostics
Function Disable-xWSManTrace 6.1.0.0 PSDiagnostics
Function Enable-xPSTrace 6.1.0.0 PSDiagnostics
Function Enable-xPSWSManCombinedTrace 6.1.0.0 PSDiagnostics
Function Enable-xWSManTrace 6.1.0.0 PSDiagnostics
Function Get-xLogProperties 6.1.0.0 PSDiagnostics
Function Set-xLogProperties 6.1.0.0 PSDiagnostics
Function Start-xTrace 6.1.0.0 PSDiagnostics
Function Stop-xTrace 6.1.0.0 PSDiagnostics
Get-Command
會取得已從模組匯入的成員。 輸出會顯示已正確為模組成員加上前置詞。
範例 7:取得和使用自定義物件
此範例示範如何取得和使用 所傳回的 Import-Module
自定義物件。
自訂物件包括代表每個匯入之模組成員的綜合成員。 例如,模組中的 Cmdlet 和函式會轉換成自訂物件的指令碼方法。
自訂對象在腳本中很有用。 它們在有數個匯入的物件有相同名稱時也非常有用。 使用物件的指令碼方法相當於指定匯入成員的完整名稱,包括其模組名稱。
只有在匯入腳本模組時,才能使用 AsCustomObject 參數。 使用 Get-Module
來判斷哪一個可用的模組是腳本模組。
Get-Module -List | Format-Table -Property Name, ModuleType -AutoSize
Name ModuleType
---- ----------
Show-Calendar Script
BitsTransfer Manifest
PSDiagnostics Manifest
TestCmdlets Script
...
$a = Import-Module -Name Show-Calendar -AsCustomObject -Passthru
$a | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Show-Calendar ScriptMethod System.Object Show-Calendar();
$a."Show-Calendar"()
腳本 Show-Calendar
模組會使用 AsCustomObject 參數匯入,以要求自定義物件和 PassThru 參數以傳回物件。 產生的自定義物件會儲存在變數中 $a
。
變數 $a
會使用管線傳送至 Get-Member
Cmdlet,以顯示已儲存物件的屬性和方法。 輸出會顯示 Show-Calendar
文稿方法。
若要呼叫 Show-Calendar
腳本方法,方法名稱必須以引號括住,因為名稱包含連字元。
範例 8:將模組重新匯入相同的會話
此範例示範當您將模組重新匯入相同會話時,如何使用的 Import-Module
Force 參數。 Force 參數會移除載入的模組,然後再次匯入。
Import-Module PSDiagnostics
Import-Module PSDiagnostics -Force -Prefix PS
第一個命令會匯入 PSDiagnostics 模組。 第二個命令再次匯入該模組,這次是使用 Prefix 參數。
如果沒有 Force 參數,會話會包含每個 PSDiagnostics Cmdlet 的兩個複本,一個是標準名稱,另一個是前置名稱。
範例 9:執行已匯入命令已隱藏的命令
此範例顯示如何執行由匯入命令所隱藏的命令。 TestModule 模組包含名為 Get-Date
的函式,會傳回年份和日期。
Get-Date
Thursday, August 15, 2019 2:26:12 PM
Import-Module TestModule
Get-Date
19227
Get-Command Get-Date -All | Format-Table -Property CommandType, Name, ModuleName -AutoSize
CommandType Name ModuleName
----------- ---- ----------
Function Get-Date TestModule
Cmdlet Get-Date Microsoft.PowerShell.Utility
Microsoft.PowerShell.Utility\Get-Date
Thursday, August 15, 2019 2:28:31 PM
第一個 Get-Date
Cmdlet 會傳回具有目前日期的 DateTime 物件。 匯入 TestModule 模組之後, Get-Date
會傳回年份的年份和日期。
使用的 Get-Command
All 參數會顯示工作階段中的所有Get-Date
命令。 結果顯示會話中有兩 Get-Date
個命令: TestModule 模組中的函式,以及 來自 Microsoft.PowerShell.Utility 模組的 Cmdlet。
因為函式的優先順序高於 Cmdlet,Get-Date
所以 TestModule 模組中的函式會執行,而不是 Get-Date
Cmdlet。 若要執行的原始版本 Get-Date
,您必須使用模組名稱限定命令名稱。
如需 PowerShell 中命令優先順序的詳細資訊,請參閱 about_Command_Precedence。
範例 10:匯入模組的最低版本
此範例會匯入 PowerShellGet 模組。 它會使用的 Import-Module
MinimumVersion 參數,只匯入2.0.0版或更新版本的模組。
Import-Module -Name PowerShellGet -MinimumVersion 2.0.0
您也可以使用 RequiredVersion 參數匯入特定版本的模組,或使用 關鍵詞的 #Requires
Module 和 Version 參數,在腳本中要求特定版本的模組。
範例 11:使用完整名稱匯入
此範例會使用 FullyQualifiedName 匯入模組的特定版本。
PS> Get-Module -ListAvailable PowerShellGet | Select-Object Name, Version
Name Version
---- -------
PowerShellGet 2.2.1
PowerShellGet 2.1.3
PowerShellGet 2.1.2
PowerShellGet 1.0.0.1
PS> Import-Module -FullyQualifiedName @{ModuleName = 'PowerShellGet'; ModuleVersion = '2.1.3' }
範例 12:使用完整路徑匯入
此範例會使用完整路徑匯入模組的特定版本。
PS> Get-Module -ListAvailable PowerShellGet | Select-Object Path
Path
----
C:\Program Files\PowerShell\Modules\PowerShellGet\2.2.1\PowerShellGet.psd1
C:\program files\powershell\6\Modules\PowerShellGet\PowerShellGet.psd1
C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.1.2\PowerShellGet.psd1
C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PowerShellGet.psd1
PS> Import-Module -Name 'C:\Program Files\PowerShell\Modules\PowerShellGet\2.2.1\PowerShellGet.psd1'
範例 13:從遠端計算機匯入模組
此範例示範如何使用 Import-Module
Cmdlet 從遠端電腦匯入模組。
此命令使用PowerShell的隱含遠端功能。
當您從另一個工作階段匯入模組時,您可以在目前的工作階段中使用 Cmdlet。 不過,使用 Cmdlet 的命令會在遠端會話中執行。
$s = New-PSSession -ComputerName Server01
Get-Module -PSSession $s -ListAvailable -Name NetSecurity
ModuleType Name ExportedCommands
---------- ---- ----------------
Manifest NetSecurity {New-NetIPsecAuthProposal, New-NetIPsecMainModeCryptoProposal, New-Ne...
Import-Module -PSSession $s -Name NetSecurity
Get-Command -Module NetSecurity -Name Get-*Firewall*
CommandType Name ModuleName
----------- ---- ----------
Function Get-NetFirewallAddressFilter NetSecurity
Function Get-NetFirewallApplicationFilter NetSecurity
Function Get-NetFirewallInterfaceFilter NetSecurity
Function Get-NetFirewallInterfaceTypeFilter NetSecurity
Function Get-NetFirewallPortFilter NetSecurity
Function Get-NetFirewallProfile NetSecurity
Function Get-NetFirewallRule NetSecurity
Function Get-NetFirewallSecurityFilter NetSecurity
Function Get-NetFirewallServiceFilter NetSecurity
Function Get-NetFirewallSetting NetSecurity
Get-NetFirewallRule -DisplayName "Windows Remote Management*" |
Format-Table -Property DisplayName, Name -AutoSize
DisplayName Name
----------- ----
Windows Remote Management (HTTP-In) WINRM-HTTP-In-TCP
Windows Remote Management (HTTP-In) WINRM-HTTP-In-TCP-PUBLIC
Windows Remote Management - Compatibility Mode (HTTP-In) WINRM-HTTP-Compat-In-TCP
New-PSSession
會建立與 Server01 計算機 (PSSession) 的遠端會話。 PSSession 會儲存在變數中$s
。
Get-Module
使用 PSSession 參數執行,會顯示已在遠端電腦上安裝並提供 NetSecurity 模組。 此命令相當於使用 Invoke-Command
Cmdlet 在遠端會話中執行 Get-Module
命令。 例如: (Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurity
使用 Import-Module
PSSession 參數執行 會將 NetSecurity 模組從遠端電腦匯入目前的會話。 Cmdlet Get-Command
可用來取得以 Get 開頭的命令,並包含來自 NetSecurity 模組的防火牆。 輸出會確認模組及其 Cmdlet 已匯入目前的作業階段。
接下來, Get-NetFirewallRule
Cmdlet 會取得 Server01 計算機上的 Windows 遠端管理防火牆規則。 這相當於使用 Invoke-Command
Cmdlet 在遠端會話上執行 Get-NetFirewallRule
。
範例 14:在沒有 Windows 作業系統的情況下管理遠端電腦上的記憶體
在此範例中,計算機的系統管理員已安裝模組探索 WMI 提供者,可讓您使用專為提供者設計的 CIM 命令。
Cmdlet New-CimSession
會在名為 RSDGF03 的遠端電腦上建立會話。 會話會連線到遠端電腦上的 WMI 服務。 CIM 會話會儲存在變數中 $cs
。
Import-Module
會使用 中的 $cs
CimSession 從 RSDGF03 電腦匯入記憶體 CIM 模組。
Cmdlet Get-Command
會顯示Get-Disk
記憶體模組中的命令。 當您將 CIM 模組匯入本機會話時,PowerShell 會將每個命令的 CDXML 檔案轉換成 PowerShell 腳本,這些腳本會在本機會話中顯示為函式。
雖然 Get-Disk
是在本機會話中輸入,但 Cmdlet 會隱含地在匯入它的遠端電腦上執行。 此命令會將對象從遠端電腦傳回至本機會話。
$cs = New-CimSession -ComputerName RSDGF03
Import-Module -CimSession $cs -Name Storage
# Importing a CIM module, converts the CDXML files for each command into PowerShell scripts.
# These appear as functions in the local session.
Get-Command Get-Disk
CommandType Name ModuleName
----------- ---- ----------
Function Get-Disk Storage
# Use implicit remoting to query disks on the remote computer from which the module was imported.
Get-Disk
Number Friendly Name OperationalStatus Total Size Partition Style
------ ------------- ----------------- ---------- ---------------
0 Virtual HD ATA Device Online 40 GB MBR
參數
-Alias
指定這個 Cmdlet 從模組匯入目前工作階段的別名。 輸入以逗號分隔的別名清單。 允許使用萬用字元。
當您匯入模組時,某些模組會自動將選取的別名匯出至您的工作階段。 此參數可讓您從匯出的別名中選取。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-ArgumentList
指定在命令期間 Import-Module
傳遞至文本模組的自變數或參數值陣列。 只有在您匯入文本模組時,此參數才有效。
您也可以依 ArgumentList 參數的別名 args 來參考。 如需 ArgumentList 行為的詳細資訊,請參閱 about_Splatting。
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsCustomObject
表示這個 Cmdlet 會傳回自定義物件,其中包含代表匯入模組成員的成員。 此參數只適用於指令碼模組。
當您使用 AsCustomObject 參數時, Import-Module
會將模組成員匯入會話,然後傳回 PSCustomObject 物件,而不是 PSModuleInfo 物件。 您可以將自訂物件儲存在變數中,並使用點標記法來叫用成員。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Assembly
指定元件物件的數位。 此 Cmdlet 會匯入在指定元件物件中實作的 Cmdlet 和提供者。 輸入包含組件物件的變數,或輸入可建立組件物件的命令。 您也可以使用管線將元件物件傳送至 Import-Module
。
當您使用此參數時,只會匯入指定組件所實作的 Cmdlet 與提供者。 如果模組包含其他檔案,則不會匯入這些檔案,而且您可能遺漏模組的重要成員。 使用此參數來偵錯和測試模組,或當系統指示模組作者使用它時。
Type: | Assembly[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-CimNamespace
指定公開 CIM 模組的替代 CIM 提供者命名空間。 預設值為「模組探索」WMI 提供者的命名空間。
使用此參數從未執行 Windows 作業系統的電腦和裝置匯入 CIM 模組。
此參數是在 Windows PowerShell 3.0 引進。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CimResourceUri
指定 CIM 模組的替代位置。 預設值是遠端電腦上的模組探索 WMI 提供者的資源 URI。
使用此參數從未執行 Windows 作業系統的電腦和裝置匯入 CIM 模組。
此參數是在 Windows PowerShell 3.0 引進。
Type: | Uri |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CimSession
指定遠端電腦上的 CIM 工作階段。 輸入包含 CIM 會話的變數,或取得 CIM 工作階段的命令,例如 Get-CimSession 命令。
Import-Module
會使用 CIM 作業階段連線,將遠端電腦的模組匯入目前的工作階段。 當您在目前會話中使用匯入模組的命令時,命令會在遠端電腦上執行。
您可以使用此參數,從未執行 Windows 作業系統的電腦和裝置,以及具有 PowerShell 但未啟用 PowerShell 遠端功能的 Windows 計算機匯入模組。
此參數是在 Windows PowerShell 3.0 引進。
Type: | CimSession |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Cmdlet
指定此 Cmdlet 從模組匯入目前工作階段的 Cmdlet 陣列。 允許使用萬用字元。
當您匯入模組時,某些模組會自動將選取的 Cmdlet 匯出至您的工作階段。 此參數可讓您從匯出的 Cmdlet 中選取。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-DisableNameChecking
表示此 Cmdlet 會隱藏當您匯入名稱包含未核准動詞或禁止字元的 Cmdlet 或函式時警告的訊息。
根據預設,當您匯入的模組匯出名稱中有未核准動詞的 Cmdlet 或函式時,PowerShell 會顯示下列警告訊息:
警告:某些彙入的命令名稱包含未核准的動詞,這可能會讓它們更容易探索。 請使用 Verbose 參數取得詳細資訊,或輸入 Get-Verb 查看核准的動詞清單。
這則訊息只是一個警告。 模組仍然完整匯入,包括不合格的命令。 雖然訊息是顯示給模組的使用者,但命名的問題應該由模組作者修正。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
此參數會導致模組載入或重載至目前模組頂端。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FullyQualifiedName
將模組的完整名稱指定為哈希表。 此值可以是字串和哈希表的組合。 哈希錶具有下列索引鍵。
ModuleName
- 必填 指定模組名稱。GUID
- 選 指定模組的 GUID。- 您也可以指定下列三個索引鍵的其中一個。 這些金鑰無法一起使用。
ModuleVersion
- 指定模組的最低可接受版本。RequiredVersion
- 指定模組的確切必要版本。MaximumVersion
- 指定模組可接受的最大版本。
Type: | ModuleSpecification[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Function
指定此 Cmdlet 從模組匯入至目前工作階段的函式數位。 允許使用萬用字元。 當您匯入模組時,某些模組會自動將選取的函式匯出至您的工作階段。 此參數可讓您從匯出的函式中選取。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Global
指出此 Cmdlet 會將模組匯入全域會話狀態,以便可供會話中的所有命令使用。
根據預設,從命令提示字元、腳本檔案或 scriptblock 呼叫 Cmdlet 時 Import-Module
,所有命令都會匯入全域會話狀態。
從另一個模組叫用時, Import-Module
Cmdlet 會將模組中的命令匯入至呼叫模組的會話狀態,包括來自巢狀模組的命令。
提示
您應該避免在模組內呼叫 Import-Module
。 相反地,請將目標模組宣告為父模組指令清單中的巢狀模組。 宣告巢狀模組可改善相依性的可探索性。
Global 參數等同於值為 Global 的 Scope 參數。
若要限制模組導出的命令,請使用 Export-ModuleMember
腳本模組中的命令。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaximumVersion
指定最大版本。 此 Cmdlet 只會匯入小於或等於指定值的模組版本。 如果沒有版本限定, Import-Module
則傳回錯誤。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MinimumVersion
指定最低版本。 此 Cmdlet 只會匯入大於或等於指定值的模組版本。 使用 MinimumVersion 參數名稱或它的別名,Version。 如果沒有版本限定, Import-Module
則會產生錯誤。
若要指定確切的版本,請使用 RequiredVersion 參數。 您也可以使用 #Requires 關鍵詞的 Module 和 Version 參數,在腳本中要求特定版本的模組。
此參數是在 Windows PowerShell 3.0 引進。
Type: | Version |
Aliases: | Version |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ModuleInfo
指定要匯入的模組物件陣列。 輸入包含模組物件的變數,或取得模組物件的命令,例如下列命令: Get-Module -ListAvailable
。 您也可以使用管線將模組物件傳送至 Import-Module
。
Type: | PSModuleInfo[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
指定要匯入之模組的名稱。 輸入模組的名稱或模組中的檔名,例如 .psd1
、 .psm1
、 .dll
或 .ps1
檔案。 檔案路徑為選擇性。 不允許通配符。 您也可以使用管線將模組名稱與檔案名傳送至 Import-Module
。
如果您省略路徑, Import-Module
請在儲存在環境變數的路徑 $env:PSModulePath
中尋找模組。
盡可能只指定模組名稱。 當您指定檔案名稱時,只會匯入該檔案中實作的成員。 如果模組包含其他檔案,則不會匯入這些檔案,而且您可能遺漏模組的重要成員。
注意
雖然可以將腳本 () .ps1
檔案匯入為模組,但腳本檔案的結構通常不像腳本模組檔案 (.psm1
) 檔案。 匯入腳本檔案不保證它可以當做模組使用。 如需詳細資訊,請參閱 about_Modules。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-NoClobber
防止匯入與目前會話中現有命令具有相同名稱的命令。 根據預設, Import-Module
匯入所有導出的模組命令。
具有相同名稱的命令可以隱藏或取代會話中的命令。 為避免工作階段中發生命令名稱衝突,請使用 Prefix 或 NoClobber 參數。 如需名稱衝突和命令優先順序的詳細資訊,請參閱 about_Modules 中的「模組和名稱衝突」和 about_Command_Precedence。
此參數是在 Windows PowerShell 3.0 引進。
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
會傳回 物件,代表您正在使用的專案。 根據預設,此 Cmdlet 不會產生任何輸出。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prefix
指定這個 Cmdlet 在匯入模組成員名稱中加入名詞的前置詞。
使用此參數來避免工作階段中不同成員具有相同名稱時可能會發生的名稱衝突。 此參數不會變更模組,而且不會影響模組自行匯入的檔案。 這些稱為巢狀模組。 此 Cmdlet 只會影響目前工作階段中的成員名稱。
例如,如果您指定前置詞 UTC,然後匯 Get-Date
入 Cmdlet,則此 Cmdlet 在會話 Get-UTCDate
中稱為 ,而且不會與原始 Get-Date
Cmdlet 混淆。
此參數的值優先順序高於模組中指定預設前置詞的 DefaultCommandPrefix 屬性。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PSSession
指定 PowerShell 使用者管理的工作階段 (PSSession) ,此 Cmdlet 會將模組匯入目前工作階段。 輸入包含 PSSession 的變數或取得 PSSession 的命令,例如 Get-PSSession
命令。
當您將不同工作階段的模組匯入到目前工作階段時,您可以使用目前的工作階段之模組的 Cmdlet,就如同您使用本機模組的 Cmdlet 一樣。 使用遠端 Cmdlet 的命令會在遠端會話中執行,但遠端詳細數據是由 PowerShell 在背景中管理。
此參數使用PowerShell的隱含遠端功能。 這相當於使用 Import-PSSession
Cmdlet 從會話匯入特定模組。
Import-Module
無法從另一個會話匯入核心 PowerShell 模組。 核心 PowerShell 模組的名稱開頭為 Microsoft.PowerShell。
此參數是在 Windows PowerShell 3.0 引進。
Type: | PSSession |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RequiredVersion
指定此 Cmdlet 匯入的模組版本。 如果未安裝版本, Import-Module
則會產生錯誤。
根據預設, Import-Module
匯入模組而不檢查版本號碼。
若要指定最小版本,請使用 MinimumVersion 參數。 您也可以使用 #Requires 關鍵詞的 Module 和 Version 參數,在腳本中要求特定版本的模組。
此參數是在 Windows PowerShell 3.0 引進。
使用 RequiredVersion 匯入現有 Windows 作業系統版本隨附的模組的腳本,不會在 Windows 操作系統的未來版本中自動執行。 這是因為未來 Windows 作業系統版本中的 PowerShell 模組版本號碼高於現有 Windows 操作系統版本中的模組版本號碼。
Type: | Version |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
指定此 Cmdlet 匯入模組的範圍。
此參數可接受的值為:
- 全域。 適用於工作階段中的所有命令。 等同於 Global 參數。
- 本機。 只適用於目前的範圍。
根據預設,從命令提示字元、腳本檔案或 scriptblock 呼叫 Cmdlet 時 Import-Module
,所有命令都會匯入全域會話狀態。 您可以使用 -Scope Local
參數將模組內容匯入腳本或 scriptblock 範圍。
從另一個模組叫用時, Import-Module
Cmdlet 會將模組中的命令匯入至呼叫端的會話狀態,包括來自巢狀模組的命令。 -Scope Global
指定或-Global
指出此 Cmdlet 會將模組匯入全域會話狀態,讓這些模組可供會話中的所有命令使用。
Global 參數等同於值為 Global 的 Scope 參數。
此參數是在 Windows PowerShell 3.0 引進。
Type: | String |
Accepted values: | Local, Global |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipEditionCheck
略過欄位上的 CompatiblePSEditions
檢查。
當模組未在CompatiblePSEditions
指令清單欄位中指定Core
時,允許將模組從"$($env:windir)\System32\WindowsPowerShell\v1.0\Modules"
模組目錄載入 PowerShell Core。
從另一個路徑匯入模組時,此參數不會執行任何動作,因為不會執行檢查。 在 Linux 和 macOS 上,此參數不會執行任何動作。
如需詳細資訊,請參閱 about_PowerShell_Editions。
警告
Import-Module -SkipEditionCheck
仍然可能無法匯入模組。 即使成功,在嘗試使用不相容的 API 時,從模組叫用命令可能會失敗。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseWindowsPowerShell
使用 Windows PowerShell 相容性功能載入模組。 如需詳細資訊 ,請參閱about_Windows_PowerShell_Compatibility 。
Type: | SwitchParameter |
Aliases: | UseWinPS |
Position: | Named |
Default value: | False |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Variable
指定此 Cmdlet 從模組匯入至目前工作階段的變數數位。 輸入變數的清單。 允許使用萬用字元。
當您匯入模組時,某些模組會自動將選取的變數匯出至您的工作階段。 此參數可讓您從匯出的變數中選取。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
輸入
System.String, System.Management.Automation.PSModuleInfo, System.Reflection.Assembly
您可以使用管線將模組名稱、模組物件或元件物件傳送至此 Cmdlet。
輸出
None, System.Management.Automation.PSModuleInfo, or System.Management.Automation.PSCustomObject
根據預設, Import-Module
不會產生任何輸出。 如果您指定 PassThru 參數,Cmdlet 會產生 代表模組的 System.Management.Automation.PSModuleInfo 物件。 如果您指定 AsCustomObject 參數,它會產生 PSCustomObject 物件。
備註
您必須先在本機計算機上安裝模組,才能匯入模組。 也就是說,模組目錄必須複製到本機計算機可存取的目錄。 如需詳細資訊,請參閱 about_Modules。
您也可以使用 PSSession 和 CIMSession 參數,匯入在遠端電腦安裝的模組。 不過,使用這些模組中 Cmdlet 的命令會在遠端電腦上的遠端會話中執行。
如果您將具有相同名稱和相同類型的成員匯入會話中,PowerShell 預設會使用上次匯入的成員。 變數和別名會被取代,而且無法存取原始專案。 函式、Cmdlet 和提供者只會受到新成員的陰影。 您可以藉由使用其嵌入式管理單元、模組或函式路徑的名稱來限定命令名稱來存取它們。
若要更新已從模組匯入之命令的格式數據,請使用
Update-FormatData
Cmdlet。Update-FormatData
也會更新從模組匯入之會話中命令的格式數據。 如果模組的格式化檔案變更,您可以執行Update-FormatData
命令來更新匯入命令的格式數據。 您不需要再次匯入模組。從 Windows PowerShell 3.0 開始,隨 PowerShell 一起安裝的核心命令會封裝在模組中。 在 Windows PowerShell 2.0 中,以及在更新版 PowerShell 中建立較舊樣式會話的主機程式中,核心命令會封裝在 PSSnapins) (嵌入式管理單元中。 Microsoft.PowerShell.Core 是一個例外,它一律是一個嵌入式管理單元。 此外,Cmdlet 所
New-PSSession
啟動的遠端會話是包含核心嵌入式管理單元的較舊樣式會話。如需使用核心模組建立較新樣式會話的 CreateDefault2 方法相關信息,請參閱 CreateDefault2 方法。
在 Windows PowerShell 2.0 中,模組物件的部分屬性值,例如 ExportedCmdlets 和 NestedModules 屬性值,在匯入模組之前不會填入。
如果您嘗試匯入包含與 Windows PowerShell 3.0+ 不相容之混合模式元件的模組,
Import-Module
則傳回如下的錯誤訊息。Import-Module:混合模式元件是以運行時間版本 'v2.0.50727' 建置,而且無法在 4.0 運行時間中載入,而不需要額外的設定資訊。
當設計給 Windows PowerShell 2.0 的模組至少包含一個混合模組元件時,就會發生此錯誤。 混合模組元件,包含 Managed 和非 Managed 程式代碼,例如 C++ 和 C#。
若要匯入包含混合模式元件的模組,請使用下列命令啟動 Windows PowerShell 2.0,然後再試
Import-Module
一次命令。PowerShell.exe -Version 2.0
若要使用 CIM 工作階段功能,遠端電腦必須具備 WS-Management 遠端功能和 Windows Management Instrumentation (WMI),這是 Microsoft 實作的「通用訊息模型 (CIM)」標準。 電腦也必須擁有具有相同基本功能的「模組探索」WMI 提供者或替代 CIM 提供者。
您可以在未執行 Windows 作業系統的電腦上,以及在具有 PowerShell 但未啟用 PowerShell 遠端功能的 Windows 計算機上,使用 CIM 工作階段功能。
您也可以使用 CIM 參數,從已啟用 PowerShell 遠端功能的電腦取得 CIM 模組,包括本機電腦。 當您在本機計算機上建立 CIM 工作階段時,PowerShell 會使用 DCOM 而非 WMI 來建立工作階段。
根據預設,
Import-Module
即使從子系範圍呼叫,也會在全域範圍中匯入模組。 最上層範圍和所有子系範圍都可以存取模組導出的專案。在子系範圍中,
-Scope Local
將匯入限制為該範圍及其所有子系範圍。 然後,父範圍不會看到匯入的成員。注意
Get-Module
會顯示目前會話中載入的所有模組。 這包括在子系範圍內本機載入的模組。 使用Get-Command -Module modulename
來查看目前範圍中載入的成員。Import-Module
不會載入模組中的類別和列舉定義。using module
在腳本開頭使用語句。 這會匯入模組,包括 類別和列舉定義。 如需詳細資訊,請參閱 about_Using。