Import-Module

新增模組到目前的會議階段。

語法

Name (預設值)

Import-Module
    [-Name] <String[]>
    [-Global]
    [-Prefix <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>]

PSSession

Import-Module
    [-Name] <String[]>
    -PSSession <PSSession>
    [-Global]
    [-Prefix <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>]

CimSession

Import-Module
    [-Name] <String[]>
    -CimSession <CimSession>
    [-Global]
    [-Prefix <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>]
    [-CimResourceUri <Uri>]
    [-CimNamespace <String>]
    [<CommonParameters>]

UseWindowsPowerShell

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>]

FullyQualifiedName

Import-Module
    [-FullyQualifiedName] <ModuleSpecification[]>
    [-Global]
    [-Prefix <String>]
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-Variable <String[]>]
    [-Alias <String[]>]
    [-Force]
    [-SkipEditionCheck]
    [-PassThru]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [-DisableNameChecking]
    [-NoClobber]
    [-Scope <String>]
    [<CommonParameters>]

FullyQualifiedNameAndPSSession

Import-Module
    [-FullyQualifiedName] <ModuleSpecification[]>
    -PSSession <PSSession>
    [-Global]
    [-Prefix <String>]
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-Variable <String[]>]
    [-Alias <String[]>]
    [-Force]
    [-SkipEditionCheck]
    [-PassThru]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [-DisableNameChecking]
    [-NoClobber]
    [-Scope <String>]
    [<CommonParameters>]

FullyQualifiedNameAndUseWindowsPowerShell

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>]

Assembly

Import-Module
    [-Assembly] <Assembly[]>
    [-Global]
    [-Prefix <String>]
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-Variable <String[]>]
    [-Alias <String[]>]
    [-Force]
    [-SkipEditionCheck]
    [-PassThru]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [-DisableNameChecking]
    [-NoClobber]
    [-Scope <String>]
    [<CommonParameters>]

ModuleInfo

Import-Module
    [-ModuleInfo] <PSModuleInfo[]>
    [-Global]
    [-Prefix <String>]
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-Variable <String[]>]
    [-Alias <String[]>]
    [-Force]
    [-SkipEditionCheck]
    [-PassThru]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [-DisableNameChecking]
    [-NoClobber]
    [-Scope <String>]
    [<CommonParameters>]

Description

Import-Module指令長會為目前的工作階段新增一個或多個模組。 從 PowerShell 3.0 開始,當你使用模組中的任何指令或提供者時,已安裝的模組會自動匯入到會話中。 不過,你仍然可以用指令 Import-Module 匯入模組。 你可以用 $PSModuleAutoLoadingPreference 偏好變數關閉自動模組匯入。 如需 $PSModuleAutoLoadingPreference 變數的詳細資訊,請參閱 about_Preference_Variables。

模組是一個包含可在 PowerShell 中使用成員的套件。 成員包括指令集、提供者、腳本、函式、變數及其他工具與檔案。 模組匯入後,你可以在你的工作階段中使用模組成員。 如需模組的詳細資訊,請參閱 about_Modules。

預設情況下,會 Import-Module 匯入模組匯出的所有成員,但你可以使用 Alias、 Function、 Cmdlet 和 Variable 參數來限制哪些成員被匯入。 NoClobber 參數防止Import-Module匯入與當前會話中成員名稱相同的成員。

Import-Module 只將模組匯入目前的 session。 要將模組匯入每個新工作階段,請在你的 PowerShell 設定檔中新增 Import-Module 指令。 如需了解關於設定檔的更多資訊,請參閱 about_Profiles。

你可以透過在遠端電腦建立一個PSSession來管理啟用PowerShell遠端Windows的電腦。 接著使用 PSSession 參數 的 Import-Module 匯入遠端電腦上安裝的模組。 當你在目前工作階段使用匯入的指令時,指令會隱含地在遠端電腦上執行。

從 PowerShell 3.0 開始Windows,你可以使用 Import-Module 來匯入通用資訊模型(CIM)模組。 CIM 模組在 Cmdlet 定義 XML(CDXML)檔案中定義 cmdlet。 此功能允許你使用在非受管程式碼組合中實作的 cmdlet,例如以 C++ 撰寫的程式碼。

對於沒有啟用 PowerShell 遠端處理的遠端電腦,包括未執行 Windows 作業系統的電腦,你可以使用 CimSession 參數 Import-Module,從遠端電腦匯入 CIM 模組。 匯入的指令會在遠端電腦上隱式執行。 CIMSession 是連接遠端電腦Windows管理儀器(WMI)的介面。

範例

範例 1:將模組成員匯入目前的 session

此範例將 PSDiagnostics 模組的成員匯入當前會話。

Import-Module -Name PSDiagnostics

範例 2:匯入由模組路徑指定的所有模組

此範例將環境變數指定 $Env:PSModulePath 路徑中所有可用模組匯入目前會話。

Get-Module -ListAvailable | Import-Module

範例 3:將多個模組的成員匯入目前的 session

此範例將 PSDiagnostics 與 Dism 模組的成員匯入目前會話。

$m = Get-Module -ListAvailable PSDiagnostics, Dism
Import-Module -ModuleInfo $m

Get-Module指令小程式會取得 PSDiagnostics 和 Dism 模組,並將物件儲存在變數中$m。 當你取得尚未匯入會話的模組時, ListAvailable 參數是必須的。

ModuleInfo 參數Import-Module用於將模組匯入目前的 session。

範例 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 參數來限制模組匯入的其他成員。

指令 Get-Module 小程式取得代表 PSDiagnostics 模組的物件。 ExportedCmdlets 屬性列出了模組所匯出的所有指令匣,儘管它們並非全部匯入。

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-CommandModule 參數,可以顯示從 PSDiagnostics 模組匯入的指令。 結果證實只有 Disable-PSTrace 和 Enable-PSTrace 指令小程式被導入。

範例 6:匯入模組成員並新增前綴

此範例將 PSDiagnostics 模組匯入目前工作階段,在成員名稱後加上前綴,然後顯示前綴成員名稱。 前綴參數 的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:將模組重新匯入至同一個工作階段

這個範例展示了當你將模組重新匯入到同一工作階段時,如何使用 ForceImport-Module 參數。 Force 參數會移除已載入的模組,然後再匯入一次。

Import-Module PSDiagnostics
Import-Module PSDiagnostics -Force -Prefix PS

第一個指令匯入 PSDiagnostics 模組。 第二個指令再次匯入模組,這次使用 前綴 參數。

若沒有 Force 參數,該會話會包含兩個 PSDiagnostics 指令檔的副本,一份為標準名稱,一份為前綴名稱。

範例 9:執行被匯入指令隱藏的指令

這個範例展示了如何執行那些被匯入指令隱藏的指令。 測試模組包含一個名為 Get-Date Function 的功能,回傳年份與日期。

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 session 中的所有 Get-Date 指令。 結果顯示,該會話中有兩個 Get-Date 指令,一個來自 TestModule 模組的函式,另一個來自 Microsoft 的 cmdlet。PowerShell.Utility module.

由於函式優先於指令令(cmdlet),因此 Get-Date 執行的是 TestModule 模組的函式,而非 Get-Date cmdlet。 要執行原始版本 Get-Date的 ,必須將指令名稱加上模組名稱作為限定。

欲了解更多關於 PowerShell 指令優先順序的資訊,請參見 about_Command_Precedence。

範例 10:匯入模組的最小版本

這個範例匯入了 PowerShellGet 模組。 它使用 MinimumVersionImport-Module 參數來匯入模組的版本或更高版本 2.0.0 。

Import-Module -Name PowerShellGet -MinimumVersion 2.0.0

你也可以使用 RequiredVersion 參數匯入特定版本的模組,或利用關鍵字的 #RequiresModule 和 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 建立一個遠端會話(PSSession)到電腦 Server01 。 PSSession 會儲存在變數中$s。

使用 PSSession 參數執行Get-Module時,會顯示 NetSecurity 模組已安裝並可於遠端電腦上使用。 此指令相當於在遠端工作階段使用 Invoke-Command cmdlet 執行 Get-Module 指令。 例如:

Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurity

使用 Import-ModulePSSession 參數執行時,會將 NetSecurity 模組從遠端電腦匯入目前的會話。 Get-Command指令檔會從 NetSecurity 模組中取得以 和 Get 包含Firewall為首的指令。 輸出確認模組及其指令點已被匯入當前會話。

接著,Get-NetFirewallRule 指令檔在 Server01 電腦上取得Windows遠端管理防火牆規則。 這相當於在遠端工作階段使用 Invoke-Command 指令碼 Get-NetFirewallRule 執行。

範例 14:管理遠端電腦上的儲存空間,且未安裝 Windows 作業系統

在此範例中,電腦管理員安裝了模組發現 WMI 提供者,允許你使用為提供者設計的 CIM 指令。

指令小程式會在 New-CimSession 遠端電腦上建立一個名為 RSDGF03 的會話。 該會話連接遠端電腦上的 WMI 服務。 CIM 會話儲存在變數中 $cs 。 Import-Module 使用 CimSession 從 $cs 電腦匯入 儲存 CIM 模組 RSDGF03 。

指令檔會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

指定此指令從模組匯入至當前會話的別名。 這時出現了一份逗號分隔的別名清單。 允許使用通配符字元。

有些模組在匯入模組時會自動匯出選中的別名到你的工作階段。 這個參數讓你可以從匯出的別名中選擇。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ArgumentList

指定一組參數或參數值陣列,在指令執行 Import-Module 過程中傳遞給腳本模組。 這個參數只在匯入腳本模組時有效。

你也可以用別名 args 來稱呼 ArgumentList 參數。 如需 ArgumentList行為的詳細資訊,請參閱 about_Splatting。

參數屬性

類型:

Object[]

預設值:None
支援萬用字元:False
不要顯示:False
別名:參數

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-AsCustomObject

表示此 cmdlet 回傳一個自訂物件,成員代表匯入的模組成員。 此參數僅適用於腳本模組。

當你使用 AsCustomObject 參數時,會 Import-Module 將模組成員匯入會話,然後回傳 PSCustomObject 而非 PSModuleInfo 物件。 你可以將自訂物件存入變數,並使用成員存取枚舉來呼叫成員。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Assembly

指定一組組裝物件陣列。 此 cmdlet 匯入指定組合物件中實作的 cmdlet 與提供者。 輸入包含組合語言物件的變數,或建立組合語言物件的指令。 你也可以將組裝物件管道接到 Import-Module。

使用此參數時,僅匯入由指定組件實作的指令集與提供者。 如果模組包含其他檔案,它們不會被匯入,你可能會缺少模組中重要的成員。 用這個參數來除錯和測試模組,或是模組作者指示你使用時。

參數屬性

類型:

Assembly[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

Assembly
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-CimNamespace

指定一個替代 CIM 提供者的命名空間,該提供者可暴露 CIM 模組。 預設值為模組發現 WMI 提供者的命名空間。

使用此參數從非 Windows 作業系統的電腦和裝置匯入 CIM 模組。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CimSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-CimResourceUri

指定CIM模組的替代位置。 預設值為遠端電腦模組發現 WMI 提供者的資源 URI。

使用此參數從非 Windows 作業系統的電腦和裝置匯入 CIM 模組。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:Uri
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CimSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-CimSession

指定遠端電腦上的 CIM 會話。 輸入包含 CIM 會話的變數,或取得 CIM 會話的指令,例如 Get-CimSession 指令。

Import-Module 使用 CIM 會話連線將遠端電腦的模組匯入目前會話。 當你在當前工作階段使用匯入模組的指令時,指令會在遠端電腦上執行。

你可以用這個參數從沒有執行 Windows 作業系統的電腦和裝置匯入模組,或是有 PowerShell 但沒有啟用 PowerShell 遠端的 Windows 電腦。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:CimSession
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CimSession
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Cmdlet

指定一個 cmdlet 陣列,該 cmdlet 從模組匯入至目前會話。 允許使用通配符字元。

有些模組在匯入模組時會自動匯出選定的指令檔到你的工作階段。 這個參數讓你可以從已匯出的指令清單中選擇。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-DisableNameChecking

指出當您匯入名稱包含未核准動詞或禁止字元的 Cmdlet 或函式時,此 Cmdlet 會隱藏警告您訊息。

預設情況下,當你匯入的模組匯出帶有未核定動詞的指令碼或函式時,PowerShell 會顯示以下警告訊息:

警告:部分匯入指令名稱包含未經核定的動詞,可能使其較不易被發現。 請使用 Verbose 參數以獲得更多細節,或輸入 Get-Verb 查看核准動詞列表。

此訊息只是警告。 完整模組仍會匯入,包括不符合規範的命令。 雖然訊息會顯示給模組使用者,但模組作者應該修正命名問題。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Force

此參數會導致模組在當前模組之上被載入或重新載入。 部分模組會載入外部組件。 如果你匯入的是載入較新版本的組合語言模組,匯入會失敗。 力場參數無法覆蓋這個錯誤。 你必須重新開始一個會話才能載入新版本。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-FullyQualifiedName

此值可以是模組名稱、完整模組規格或模組檔案的路徑。

當值為路徑時,路徑可以是完整或相對路徑。 相對於包含 using 語句的腳本,會解析相對路徑。

當值是名稱或模組規格時,PowerShell 會 搜尋 PSModulePath 中的指定模組。

模組規格是具有下列索引鍵的哈希表。

  • ModuleName - 必要 指定模組名稱。
  • GUID - 可選 指定模組的 GUID。
  • 同時 必要 至少指定下列三個鍵中的一個。
    • ModuleVersion - 指定模組的最低可接受的版本。
    • MaximumVersion - 指定模組的最大可接受的版本。
    • RequiredVersion - 指定模組的確切必要版本。 這無法與其他版本金鑰搭配使用。

參數屬性

類型:

ModuleSpecification[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

FullyQualifiedName
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
FullyQualifiedNameAndPSSession
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
FullyQualifiedNameAndWinCompat
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Function

指定一個函式陣列,該指令從模組匯入至目前會話。 允許使用通配符字元。 有些模組在匯入模組時會自動匯出選定函式到你的工作階段。 這個參數讓你可以從已匯出的函式中選擇。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Global

表示這個 cmdlet 會將模組匯入全域會話狀態,讓所有指令都能使用。

預設情況下,當 Import-Module 從命令提示字元、腳本檔案或 scriptblock 呼叫 cmdlet 時,所有指令都會匯入全域會話狀態。

當從其他模組呼叫時, Import-Module cmdlet 會將模組中的指令,包括巢狀模組的指令,匯入呼叫模組的會話狀態。

小提示

你應該避免在模組內通話 Import-Module 。 相反地,將目標模組宣告為父模組清單中的巢狀模組。 宣告巢狀模組能提升依賴性的可發現性。

全域參數等同於值為全域的範圍參數。

若要限制模組匯出的指令,請使用 Export-ModuleMember 腳本模組中的指令。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-MaximumVersion

規定最大版本。 這個 cmdlet 只會匯入小於或等於指定值的模組版本。 若無版本符合資格,則 Import-Module 回傳錯誤。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Name
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
PSSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
CimSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
WinCompat
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-MinimumVersion

規定最低版本。 這個 cmdlet 只會匯入大於或等於指定值的模組版本。 使用 MinimumVersion 參數名稱或其別名 Version。 若無版本符合資格, Import-Module 則產生錯誤。

要指定精確版本,請使用 RequiredVersion 參數。 你也可以利用 #Requires 關鍵字的 Module 和 Version 參數,要求腳本中必須有特定版本的模組。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:Version
預設值:None
支援萬用字元:False
不要顯示:False
別名:Version

參數集

Name
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
PSSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
CimSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
WinCompat
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ModuleInfo

指定一組要匯入的模組物件陣列。 輸入包含模組物件的變數,或輸入取得模組物件的指令,例如以下指令: Get-Module -ListAvailable。 您也可以使用管線將模組物件傳送至 Import-Module。

參數屬性

類型:

PSModuleInfo[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

ModuleInfo
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Name

指定要匯入的模組名稱。 輸入模組名稱或模組中檔案名稱,例如 .psd1、 .psm1、 .dll或 .ps1 檔案。 檔案路徑是可選的。 不允許使用通配符字元。 你也可以將模組名稱和檔名管道傳送到 Import-Module。

如果你省略了路徑,請 Import-Module 在環境變數中儲存 $Env:PSModulePath 的路徑中尋找該模組。

盡可能只指定模組名稱。 當你指定檔名時,只有該檔案中實作的成員會被匯入。 如果模組包含其他檔案,它們不會被匯入,你可能會缺少模組中重要的成員。

Note

雖然可以將腳本 (.ps1) 檔案匯入為模組,但腳本檔案通常結構不像腳本模組的檔案 (.psm1) 檔案。 匯入腳本檔並不保證它能當作模組使用。 如需詳細資訊,請參閱 about_Modules。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

Name
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
PSSession
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
CimSession
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
WinCompat
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-NoClobber

防止匯入與當前會話中與現有指令名稱相同的指令。 預設情況下, Import-Module 會匯入所有匯出的模組指令。

名稱相同的指令可以在會話中隱藏或替換指令。 為避免指令名稱衝突,請使用 Prefix 或 NoClobber 參數。 欲了解更多關於名稱衝突與指令優先順序的資訊,請參閱 about_Modules 與 about_Command_Precedence中的「模組與名稱衝突」。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:NoOverwrite

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PassThru

回傳一個代表匯入模組的物件。 根據預設,此 Cmdlet 不會產生任何輸出。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Prefix

指定一個前綴,該 cmdlet 會在匯入模組成員名稱中的名詞後加上。

使用此參數以避免不同成員同名時可能產生名稱衝突。 這個參數不會改變模組本身,也不會影響模組匯入的檔案。 這些稱為巢狀模組。 此指令只影響當前會期成員的姓名。

例如,如果你指定前綴 UTC 並匯入一個 Get-Date cmdlet,該 cmdlet 在會話 Get-UTCDate中會被稱為 ,且不會與原始 Get-Date cmdlet 混淆。

此參數的值優先於模組的 DefaultCommandPrefix 屬性,後者指定預設前綴。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PSSession

指定一個 PowerShell 使用者管理會話(PSSession),該指令從中將模組匯入目前會話。 輸入一個包含 PSSession 或指令的變數,Get-PSSession例如指令。

當你從不同會話匯入模組到目前會話時,你可以像使用本地模組的 cmdlets 一樣,在當前會話中使用該模組的 cmdlet。 使用遠端指令碼的指令會在遠端工作階段執行,但遠端管理細節則由 PowerShell 在背景管理。

此參數使用 PowerShell 的隱含遠端處理功能。 這就像用 Import-PSSession cmdlet 從 session 匯入特定模組一樣。

Import-Module 無法從其他工作階段匯入核心 PowerShell 模組。 核心 PowerShell 模組的名稱以 Microsoft 開頭。PowerShell。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:PSSession
預設值:None
支援萬用字元:False
不要顯示:False

參數集

PSSession
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
FullyQualifiedNameAndPSSession
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-RequiredVersion

指定該 cmdlet 匯入的模組版本。 如果沒有安裝該版本, Import-Module 就會產生錯誤。

預設情況下,匯 Import-Module 入模組時不會查看版本號。

要指定最小版本,請使用 MinimumVersion 參數。 你也可以利用 #Requires 關鍵字的 Module 和 Version 參數,要求腳本中必須有特定版本的模組。

此參數是在 Windows PowerShell 3.0 中引進的。

使用 RequiredVersion 來匯入現有Windows版本中包含模組的腳本,未來版本中不會自動執行Windows作業系統。 這是因為未來 Windows 作業系統版本中的 PowerShell 模組版本號高於現有 Windows 作業系統版本的模組版本號。

參數屬性

類型:Version
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Name
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
PSSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
CimSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
WinCompat
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Scope

指定一個可匯入模組的範圍。

此參數可接受的值為:

  • 全域。 該指令在會話中可使用。 等同於 全域 參數。
  • 本機。 目前僅有相關資訊。

預設情況下,當 Import-Module 從命令提示字元、腳本檔案或 scriptblock 呼叫 cmdlet 時,所有指令都會匯入全域會話狀態。 你可以用這個 -Scope Local 參數將模組內容匯入腳本或 scriptblock 範圍。

當從其他模組呼叫時, Import-Module cmdlet 會將模組中的指令,包括巢狀模組的指令,匯入呼叫者的會話狀態。 指定 -Scope Global 或 -Global 表示這個 cmdlet 會將模組匯入全域 session 狀態,讓所有指令都能使用。

全域參數等同於值為全域的範圍參數。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:String
預設值:None
接受的值:Local, Global
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-SkipEditionCheck

跳過場上的檢查 CompatiblePSEditions 。

允許將模組目錄中的模組"$($Env:windir)\System32\WindowsPowerShell\v1.0\Modules"載入 PowerShell Core,當該模組在清單欄位中未指定CoreCompatiblePSEditions時。

當從其他路徑匯入模組時,這個切換器不會做任何事,因為不會執行檢查。 在 Linux 和 macOS 上,這個切換器沒有任何作用。

欲了解更多資訊,請參見 about_PowerShell_Editions。

警告

Import-Module -SkipEditionCheck 仍然很可能會無法匯入模組。 即使成功,當模組嘗試使用不相容的 API 時,呼叫指令也可能失敗。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

Name
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
PSSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
CimSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
FullyQualifiedName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
FullyQualifiedNameAndPSSession
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
Assembly
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ModuleInfo
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-UseWindowsPowerShell

載入模組時使用Windows PowerShell相容性功能。 更多資訊請參見 about_Windows_PowerShell_Compatibility 。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:使用WinPS

參數集

WinCompat
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
FullyQualifiedNameAndWinCompat
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Variable

指定一個變數陣列,該指令從模組匯入到目前的會話中。 輸入一份變數清單。 允許使用通配符字元。

有些模組在匯入模組時會自動匯出選取的變數到你的工作階段。 這個參數讓你可以從匯出的變數中選擇。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。

輸入

String

您可以通過管道將模組名稱傳送至此 Cmdlet。

PSModuleInfo

您可以使用管線將模組物件傳送至此 Cmdlet。

Assembly

你可以把組裝物件管道傳到這個 cmdlet。

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

PSModuleInfo

如果你指定 PassThru 參數,該 cmdlet 會產生一個 System.Management.Automation.PSModuleInfo 物件,代表匯入的模組。

PSCustomObject

如果你同時指定 AsCustomObject 和 PassThru 參數,指令檔會產生一個代表模組的 PSCustomObject 物件。

備註

PowerShell 包含下列 Import-Module的別名:

  • 所有平臺:

    • ipmo
  • 在你能匯入模組之前,該模組必須能被你本地電腦存取,並且包含在 PSModulePath 環境變數中。 如需詳細資訊,請參閱 about_Modules。

    你也可以使用 PSSession 和 CimSession 參數匯入安裝在遠端電腦上的模組。 然而,使用這些模組中 cmdlet 的指令會在遠端電腦的遠端會話中執行。

  • 如果你匯入同名相同類型的成員到你的工作階段,PowerShell 預設會使用最後匯入的成員。 變數和別名都被替換,原始檔案也無法存取。 函式、指令重管與提供者僅由新成員跟隨。 可透過將指令名稱加上其 snap-in、模組或函式路徑名稱來存取。

  • 要更新從模組匯入指令的格式資料,請使用 Update-FormatData cmdlet。 如果模組的格式化檔案有變動,請使用 Update-FormatData cmdlet 更新匯入指令的格式資料。 你不需要重新匯入模組。

  • 從 Windows PowerShell 3.0 開始,PowerShell 安裝的核心指令會以模組形式封裝。 在 PowerShell 2.0 Windows以及在後期版本中建立舊式會話的主機程式中,核心指令以 snap-in(PSSnapins)形式封裝。 例外是Microsoft。PowerShell.Core,這通常是 snap-in。 此外,遠端工作階段,如 cmdlet 啟動 New-PSSession 的,是較舊式的工作階段,包含核心 snap-in。

    關於建立帶有核心模組的新型 CreateDefault2 方法,請參見 CreateDefault2 方法。

  • 在 PowerShell 2.0 Windows中,模組物件的一些屬性值,例如 ExportedCmdlets 和 NestedModules屬性值,直到模組匯入後才會被填入。

  • 如果你嘗試匯入包含與 PowerShell 3.0+ 不相容的混合模式組件的模組,WindowsImport-Module 會回傳類似以下錯誤訊息。

    Import-Module : 混合模式組合是根據執行時版本的 'v2.0.50727' 建置,且無法在 4.0 執行時載入,除非有額外的設定資訊。

    當為 Windows PowerShell 2.0 設計的模組包含至少一個混合模組組件時,會發生此錯誤。 一個混合模組組合語言,包含受管理與非受管理程式碼,例如 C++ 和 C#。

    若要匯入包含混合模式組件的模組,請使用以下指令Windows啟動 PowerShell 2.0,然後再嘗試 Import-Module 指令。

    powershell.exe -Version 2.0

  • 要使用 CIM 會話功能,遠端電腦必須具備 WS-Management 遠端存取及Windows管理儀器(WMI),這是通用資訊模型(CIM)標準的Microsoft實作。 電腦還必須具備模組發現 WMI 提供者或具備相同基本功能的替代 CIM 供應商。

    你可以在非 Windows 作業系統的電腦上使用 CIM 會話功能,以及安裝 PowerShell 但未啟用 PowerShell 遠端的 Windows 電腦。

    你也可以利用 CIM 參數,從啟用 PowerShell 遠端管理的電腦取得 CIM 模組,包括本地電腦。 當你在本地電腦建立 CIM 會話時,PowerShell 會使用 DCOM 而非 WMI 來建立會話。

  • 預設情況下, Import-Module 即使從後代範圍呼叫,也會匯入全域範圍的模組。 頂層範圍及所有後繼範圍皆可存取模組匯出的元素。

    在後代範圍中,限制 -Scope Local 匯入權限為該範圍及其所有後代範圍。 父範圍則看不到匯入的成員。

    Note

    Get-Module 顯示目前會話中所有已載入的模組。 這包括在本地以後代範圍載入的模組。 用 Get-Command -Module modulename 來查看目前範圍內哪些成員被載入。

  • Import-Module 模組中不會載入類別和列舉定義。 請使用 using module 你腳本開頭的陳述。 此舉匯入模組,包括類別與列舉定義。 如需詳細資訊,請參閱 about_Using。

  • 在開發文本模組期間,通常會變更程式碼,然後使用 Import-Module 搭配 Force 參數載入新版本的模組。 這僅適用於根模組中函式的變更。 Import-Module 不會重載任何巢狀模組。 此外,沒有任何方法可以載入任何更新的類別或列舉。

    要取得巢狀模組中定義的模組成員,請移除帶有 Remove-Module的模組,然後再匯入該模組。

    如果模組載入了 using 語句,你必須啟動一個新工作階段來匯入更新的類別和列舉定義。 在 PowerShell 中定義並使用 using 語句匯入的類別和列舉無法卸載。