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 入模組匯出的所有成員,但您可以使用 AliasFunctionCmdletVariable 參數來限制要匯入的成員。 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 會取得 PSDiagnosticsDism 模組,並將物件儲存在變數中$mGet-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在載入模組時報告進度。 如果沒有 VerbosePassThruAsCustomObject 參數,Import-Module在匯入模組時不會產生任何輸出。

範例 5:限制匯入會話的模組成員

這個範例示範如何限制哪些模組成員會匯入會話,以及此命令對會話的影響。 Function 參數會限制從模組匯入的成員。 您也可以使用 AliasVariableCmdlet 參數來限制模組匯入的其他成員。

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-ModuleForce 參數會移除載入的模組,然後再次匯入。

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-DateCmdlet 會傳回具有目前日期的 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 參數匯入特定版本的模組,或使用 關鍵詞的 ModuleVersion 參數 #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 會話會儲存在變數中 $csImport-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 從模組匯入至目前工作階段的別名。 輸入以逗號分隔的別名清單。 允許通配符。

當您匯入模組時,某些模組會自動將選取的別名匯出到您的會話。 這個參數可讓您從匯出的別名中選取 。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-ArgumentList

指定在命令期間 Import-Module 傳遞至文本模組的自變數或參數值陣列。 只有在匯入腳本模組時,此參數才有效。

您也可以依其別名 args參考 ArgumentList 參數。 如需 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

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

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

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

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

  • ModuleName - 必要 指定模組名稱。
  • GUID - 選擇性 指定模組的 GUID。
  • 也必須指定下列三個索引鍵中的至少一個。
    • ModuleVersion - 指定模組的最低可接受的版本。
    • MaximumVersion - 指定模組的最大可接受的版本。
    • RequiredVersion - 指定模組的確切必要版本。 這無法與其他版本金鑰搭配使用。
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 關鍵詞的 ModuleVersion 參數,在腳本中要求特定版本的模組。

此參數是在 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 匯入所有導出的模組命令。

具有相同名稱的命令可以隱藏或取代會話中的命令。 若要避免會話中的命令名稱衝突,請使用 PrefixNoClobber 參數。 如需名稱衝突和命令優先順序的詳細資訊,請參閱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 關鍵詞的 ModuleVersion 參數,在腳本中要求特定版本的模組。

此參數是在 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

指定要匯入模組的範圍。

此參數可接受的值為:

  • 全域。 可供會話中的所有命令使用。 相當於 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

輸入

String

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

PSModuleInfo

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

Assembly

您可以使用管線將元件物件傳送至這個 Cmdlet。

輸出

None

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

PSModuleInfo

如果您指定 PassThru 參數,Cmdlet 會產生 代表匯入模組的 System.Management.Automation.PSModuleInfo 物件。

PSCustomObject

如果您同時指定 AsCustomObjectPassThru 參數,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 中,模組物件的一些屬性值,例如 ExportedCmdletsNestedModules 屬性值,在匯入模組之前不會填入。

  • 如果您嘗試匯入包含與 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

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

    若要取得巢狀模組中定義的更新模組成員,請使用 移除模組 Remove-Module,然後再次匯入模組。

    如果模組已使用 using 語句載入,您必須啟動新的工作階段,才能匯入類別和列舉的更新定義。 在 PowerShell 中定義的類別和列舉,且無法卸除使用 using 語句匯入的類別和列舉。