Import-Module
將模組新增至目前的會話。
語法
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 會取得 PSDiagnostics 和 Dism 模組,並將物件儲存在變數中$m
。Get-Module
當您取得尚未匯入會話的模組時,需要 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 模組匯入目前的會話、將前置詞新增至成員名稱,然後顯示前置成員名稱。 的 Prefix 參數 Import-Module
會將 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:將模組重新匯入相同的會話
此範例示範如何將模組重新匯入相同會話時,使用 的 Force 參數 Import-Module
。 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
會傳回年份和日期。
使用的 All 參數Get-Command
顯示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 參數匯入特定版本的模組,或使用 關鍵詞的 Module 和 Version 參數 #Requires
,在腳本中要求特定版本的模組。
範例 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
會建立電腦的遠端會話 (PSSession)。Server01
PSSession 會儲存在變數中$s
。
使用 PSSession 參數執行Get-Module
時,會顯示 NetSecurity 模組已安裝且可在遠端電腦上使用。 此命令相當於使用 Invoke-Command
Cmdlet 在遠端會話中執行 Get-Module
命令。 例如:
Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurity
使用 PSSession 參數執行Import-Module
,會將 NetSecurity 模組從遠端電腦匯入目前的會話。 Cmdlet 會Get-Command
從 NetSecurity 模組擷取開頭Get
和包含Firewall
的命令。 輸出會確認模組及其 Cmdlet 已匯入目前的作業階段。
接下來, Get-NetFirewallRule
Cmdlet 會取得電腦上的 Windows 遠端管理防火牆規則 Server01
。 這相當於使用 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 會隱含地在匯入該 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 從模組匯入至目前工作階段的別名。 輸入以逗號分隔的別名清單。 允許通配符。
當您匯入模組時,某些模組會自動將選取的別名匯出到您的會話。 這個參數可讓您從匯出的別名中選取 。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-ArgumentList
指定在命令期間 Import-Module
傳遞至文本模組的自變數或參數值陣列。 只有在匯入腳本模組時,此參數才有效。
您也可以依其別名 args 來參考 ArgumentList 參數。 如需 ArgumentList 行為的詳細資訊,請參閱about_Splatting。
類型: | Object[] |
別名: | Args |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-AsCustomObject
指出這個 Cmdlet 會傳回自定義物件,其中包含代表匯入模組成員的成員。 此參數僅適用於腳本模組。
當您使用 AsCustomObject 參數時, Import-Module
會將模組成員匯入會話,然後傳回 PSCustomObject 物件,而不是 PSModuleInfo 物件。 您可以將自定義物件儲存在變數中,並使用成員存取列舉來叫用成員。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Assembly
指定元件物件的數位。 此 Cmdlet 會匯入指定元件物件中實作的 Cmdlet 和提供者。 輸入包含元件物件的變數,或建立元件物件的命令。 您也可以使用管線將元件物件傳送至 Import-Module
。
當您使用此參數時,只會匯入指定元件所實作的 Cmdlet 和提供者。 如果模組包含其他檔案,則不會匯入這些檔案,而且您可能遺漏模組的重要成員。 使用此參數來偵錯和測試模組,或當模組作者指示使用它時。
類型: | Assembly[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-CimNamespace
指定公開 CIM 模組之替代 CIM 提供者的命名空間。 預設值是模組探索 WMI 提供者的命名空間。
使用此參數從未執行 Windows 作業系統的電腦和裝置匯入 CIM 模組。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CimResourceUri
指定 CIM 模組的替代位置。 預設值是遠端電腦上模組探索 WMI 提供者的資源 URI。
使用此參數從未執行 Windows 作業系統的電腦和裝置匯入 CIM 模組。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | Uri |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CimSession
指定遠端電腦上的 CIM 工作階段。 輸入包含 CIM 會話的變數,或取得 CIM 工作階段的命令,例如 Get-CimSession 命令。
Import-Module
會使用 CIM 會話連線,將模組從遠端電腦匯入目前的工作階段。 當您在目前會話中使用來自匯入模組的命令時,命令會在遠端電腦上執行。
您可以使用此參數,從未執行 Windows 作業系統的電腦和裝置,以及具有 PowerShell 但未啟用 PowerShell 遠端功能的 Windows 計算機匯入模組。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | CimSession |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Cmdlet
指定此 Cmdlet 從模組匯入至目前工作階段的 Cmdlet 陣列。 允許通配符。
當您匯入模組時,某些模組會自動將選取的 Cmdlet 匯出到您的工作階段。 這個參數可讓您從匯出的 Cmdlet 中選取 。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-DisableNameChecking
指出當您匯入名稱包含未核准動詞或禁止字元的 Cmdlet 或函式時,此 Cmdlet 會隱藏警告您訊息。
根據預設,當您匯入的模組匯出名稱中有未核准動詞的 Cmdlet 或函式時,PowerShell 會顯示下列警告訊息:
警告:某些彙入的命令名稱包含未經核准的動詞命令,這可能會使其更容易探索。 如需詳細資訊,請使用 Verbose 參數,或輸入 Get-Verb 來查看已核准的動詞清單。
此訊息只是警告。 完整模組仍會匯入,包括不符合規範的命令。 雖然訊息會顯示給模組使用者,但模組作者應該修正命名問題。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Force
此參數會使模組在目前模組的頂端載入或重載。 某些模組會載入外部元件。 如果您要匯入載入較新版本元件的模組,匯入會失敗。 Force 參數無法覆寫錯誤。 您必須啟動新的工作階段,才能載入新版本。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-FullyQualifiedName
此值可以是模組名稱、完整模組規格或模組檔案的路徑。
當值為路徑時,路徑可以是完整或相對路徑。 相對於包含 using 語句的腳本,會解析相對路徑。
當值是名稱或模組規格時,PowerShell 會 搜尋 PSModulePath 中的指定模組。
模組規格是具有下列索引鍵的哈希表。
ModuleName
- 必要 指定模組名稱。GUID
- 選擇性 指定模組的 GUID。- 也必須指定下列三個索引鍵中的至少一個。
ModuleVersion
- 指定模組的最低可接受的版本。MaximumVersion
- 指定模組的最大可接受的版本。RequiredVersion
- 指定模組的確切必要版本。 這無法與其他版本金鑰搭配使用。
類型: | ModuleSpecification[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Function
指定此 Cmdlet 從模組匯入至目前工作階段的函式數位。 允許通配符。 當您匯入模組時,某些模組會自動將選取的函式匯出到您的會話。 這個參數可讓您從匯出的函式中選取 。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-Global
指出此 Cmdlet 會將模組匯入全域會話狀態,以便可供會話中的所有命令使用。
根據預設,從命令提示字元、腳本檔案或 scriptblock 呼叫 Cmdlet 時 Import-Module
,所有命令都會匯入全域會話狀態。
從另一個模組叫用時, Import-Module
Cmdlet 會將模組中的命令,包括來自巢狀模組的命令匯入呼叫模組的會話狀態。
提示
您應該避免從模組內呼叫 Import-Module
。 相反地,請將目標模組宣告為父模組指令清單中的巢狀模組。 宣告巢狀模組可改善相依性的可探索性。
Global 參數相當於具有 Global 值的 Scope 參數。
若要限制模組導出的命令,請使用 Export-ModuleMember
腳本模組中的命令。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-MaximumVersion
指定最大版本。 此 Cmdlet 只會匯入小於或等於指定值的模組版本。 如果沒有版本限定, Import-Module
則傳回錯誤。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-MinimumVersion
指定最低版本。 此 Cmdlet 只會匯入大於或等於指定值的模組版本。 使用 MinimumVersion 參數名稱或其別名 Version。 如果沒有版本限定, Import-Module
則會產生錯誤。
若要指定確切的版本,請使用 RequiredVersion 參數。 您也可以使用 #Requires 關鍵詞的 Module 和 Version 參數,在腳本中要求特定版本的模組。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | Version |
別名: | Version |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ModuleInfo
指定要匯入的模組物件陣列。 輸入包含模組物件的變數,或取得模組物件的命令,例如下列命令: Get-Module -ListAvailable
。 您也可以使用管線將模組物件傳送至 Import-Module
。
類型: | PSModuleInfo[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Name
指定要匯入的模組名稱。 輸入模組的名稱或模組中的檔名,例如 .psd1
、 .psm1
、 .dll
或 .ps1
檔案。 檔案路徑是選擇性的。 不允許通配符。 您也可以使用管線將模組名稱與檔案名傳送至 Import-Module
。
如果您省略路徑, Import-Module
請在儲存在 $env:PSModulePath
環境變數的路徑中尋找模組。
盡可能只指定模組名稱。 當您指定檔名時,只會匯入該檔案中實作的成員。 如果模組包含其他檔案,則不會匯入這些檔案,而且您可能遺漏模組的重要成員。
注意
雖然可以將腳本 (.ps1
) 檔案匯入為模組,但腳本檔案通常不像腳本模組檔案 (.psm1
) 檔案的結構。 匯入腳本檔案不保證可作為模組使用。 如需詳細資訊,請參閱 about_Modules。
類型: | String[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | True |
-NoClobber
防止匯入與目前會話中現有命令具有相同名稱的命令。 根據預設, Import-Module
匯入所有導出的模組命令。
具有相同名稱的命令可以隱藏或取代會話中的命令。 若要避免會話中的命令名稱衝突,請使用 Prefix 或 NoClobber 參數。 如需名稱衝突和命令優先順序的詳細資訊,請參閱about_Modules和about_Command_Precedence中的<模組和名稱衝突>。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | SwitchParameter |
別名: | NoOverwrite |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-PassThru
傳回物件,表示匯入的模組。 根據預設,此 Cmdlet 不會產生任何輸出。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Prefix
指定這個 Cmdlet 在匯入模組成員名稱中加入名詞的前置詞。
使用此參數可避免會話中不同成員具有相同名稱時可能發生的名稱衝突。 此參數不會變更模組,而且不會影響模組自行匯入的檔案。 這些稱為巢狀模組。 此 Cmdlet 只會影響目前工作階段中成員的名稱。
例如,如果您指定前置詞 UTC,然後匯 Get-Date
入 Cmdlet,則此 Cmdlet 在會話中已知為 Get-UTCDate
,而且不會與原始 Get-Date
Cmdlet 混淆。
此參數的值優先於 模組的 DefaultCommandPrefix 屬性,指定預設前置詞。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | 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 中引進的。
類型: | PSSession |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-RequiredVersion
指定此 Cmdlet 匯入的模組版本。 如果未安裝版本, Import-Module
則會產生錯誤。
根據預設, Import-Module
匯入模組而不檢查版本號碼。
若要指定最低版本,請使用 MinimumVersion 參數。 您也可以使用 #Requires 關鍵詞的 Module 和 Version 參數,在腳本中要求特定版本的模組。
此參數是在 Windows PowerShell 3.0 中引進的。
使用 RequiredVersion 匯入現有 Windows 作業系統版本隨附的模組的腳本,不會在未來的 Windows 作業系統版本中自動執行。 這是因為未來 Windows 作業系統版本中的 PowerShell 模組版本號碼高於現有 Windows 操作系統版本中的模組版本號碼。
類型: | Version |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Scope
指定要匯入模組的範圍。
此參數可接受的值為:
- 全域。 可供會話中的所有命令使用。 相當於 Global 參數。
- 本機。 僅適用於目前的範圍。
根據預設,從命令提示字元、腳本檔案或 scriptblock 呼叫 Cmdlet 時 Import-Module
,所有命令都會匯入全域會話狀態。 您可以使用 -Scope Local
參數,將模組內容匯入腳本或 scriptblock 範圍。
從另一個模組叫用時, Import-Module
Cmdlet 會將模組中的命令,包括來自巢狀模組的命令匯入呼叫端的會話狀態。 -Scope Global
指定或-Global
指出此 Cmdlet 會將模組匯入全域會話狀態,讓這些模組可供會話中的所有命令使用。
Global 參數相當於具有 Global 值的 Scope 參數。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | String |
接受的值: | Local, Global |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SkipEditionCheck
略過欄位上的 CompatiblePSEditions
檢查。
當模組未在CompatiblePSEditions
指令清單欄位中指定Core
時,允許將模組從"$($env:windir)\System32\WindowsPowerShell\v1.0\Modules"
模組目錄載入 PowerShell Core。
從另一個路徑匯入模組時,此參數不會執行任何動作,因為不會執行檢查。 在 Linux 和 macOS 上,此參數不會執行任何動作。
如需詳細資訊,請參閱 about_PowerShell_Editions。
警告
Import-Module -SkipEditionCheck
仍然可能無法匯入模組。 即使成功,從模組叫用命令,在嘗試使用不相容的 API 時,稍後可能會失敗。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-UseWindowsPowerShell
使用 Windows PowerShell 相容性功能載入模組。 如需詳細資訊,請參閱 about_Windows_PowerShell_Compatibility 。
類型: | SwitchParameter |
別名: | UseWinPS |
Position: | Named |
預設值: | False |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Variable
指定此 Cmdlet 從模組匯入至目前工作階段的變數數位。 輸入變數清單。 允許通配符。
當您匯入模組時,某些模組會自動將選取的變數匯出到您的會話。 這個參數可讓您從匯出的變數中選取 。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
輸入
您可以使用管線將模組名稱傳送至此 Cmdlet。
您可以使用管線將模組物件傳送至此 Cmdlet。
您可以使用管線將元件物件傳送至這個 Cmdlet。
輸出
None
根據預設,此 Cmdlet 不會傳回任何輸出。
如果您指定 PassThru 參數,Cmdlet 會產生 代表匯入模組的 System.Management.Automation.PSModuleInfo 物件。
如果您同時指定 AsCustomObject 和 PassThru 參數,Cmdlet 會產生代表模組的 PSCustomObject 物件。
備註
PowerShell 包含下列的 Import-Module
別名:
所有平臺:
ipmo
您必須先存取本機計算機並包含在環境變數中
PSModulePath
,才能匯入模組,才能匯入模組。 如需詳細資訊,請參閱 about_Modules。您也可以使用 PSSession 和 CIMSession 參數匯入安裝在遠端電腦上的模組。 不過,使用這些模組中 Cmdlet 的命令會在遠端電腦上的遠端會話中執行。
如果您將具有相同名稱和相同類型的成員匯入會話中,PowerShell 預設會使用上次匯入的成員。 會取代變數和別名,而且無法存取原始專案。 函式、Cmdlet 和提供者只會受到新成員的陰影。 您可以藉由使用其嵌入式管理單元、模組或函式路徑的名稱來限定命令名稱來存取它們。
若要更新從模組匯入之命令的格式數據,請使用
Update-FormatData
Cmdlet。 如果模組的格式檔變更,請使用Update-FormatData
Cmdlet 來更新匯入命令的格式數據。 您不需要再次匯入模組。從 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 管理遠端處理和 Windows Management Instrumentation (WMI),這是通用資訊模型 (CIM) 標準的Microsoft實作。 計算機也必須有模組探索 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。在開發文本模組期間,通常會變更程式碼,然後使用 Force 參數載入新版的模組
Import-Module
。 這僅適用於根模組中函式的變更。Import-Module
不會重載任何巢狀模組。 此外,沒有任何方法可以載入任何更新的類別或列舉。若要取得巢狀模組中定義的更新模組成員,請使用 移除模組
Remove-Module
,然後再次匯入模組。如果模組已使用
using
語句載入,您必須啟動新的工作階段,才能匯入類別和列舉的更新定義。 在 PowerShell 中定義的類別和列舉,且無法卸除使用using
語句匯入的類別和列舉。