共用方式為


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-ModulePSSession 參數匯入遠端電腦上安裝的模組。 當您在目前的會話中使用匯入的命令時,命令會在遠端電腦上隱含執行。

從 Windows PowerShell 3.0 開始,您可以使用 匯Import-Module入 Common Information Model (CIM) 模組。 CIM 模組會在 Cmdlet 定義 XML (CDXML) 檔案中定義 Cmdlet。 此功能可讓您使用在非 Managed 程式代碼元件中實作的 Cmdlet,例如以 C++ 撰寫的 Cmdlet。

對於未啟用 PowerShell 遠端功能的遠端電腦,包括未執行 Windows 作業系統的電腦,您可以使用 的 Import-ModuleCIMSession 參數從遠端電腦匯入 CIM 模組。 匯入的命令會在遠端電腦上隱含執行。 CIMSession 是遠端電腦上的 Windows Management Instrumentation (WMI) 連線。

範例

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

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

Import-Module -Name PSDiagnostics

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

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

Get-Module -ListAvailable | Import-Module

範例 3:將數個模組的成員匯入目前的會話

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

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

Cmdlet Get-Module 會取得 PSDiagnosticsDism 模組,並將物件儲存在 變數中 $m 。 當您取得尚未匯入會話的模組時,需要 ListAvailable 參數。

Import-ModuleModuleInfo 參數是用來將模組匯入目前的會話。

範例 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-CommandModule 參數會顯示從 PSDiagnostics 模組匯入的命令。 結果會確認只 Disable-PSTrace 匯入和 Enable-PSTrace Cmdlet。

範例 6:匯入模組的成員並新增前置詞

本範例會將 PSDiagnostics 模組匯入目前的會話、將前置詞新增至成員名稱,然後顯示前置成員名稱。 的 Import-ModulePrefix 參數會將 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-ModuleForce 參數。 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-CommandAll 參數會顯示工作階段中的所有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-ModuleMinimumVersion 參數,只匯入2.0.0版或更新版本的模組。

Import-Module -Name PowerShellGet -MinimumVersion 2.0.0

您也可以使用 RequiredVersion 參數匯入特定版本的模組,或使用 關鍵詞的 #RequiresModuleVersion 參數,在腳本中要求特定版本的模組。

範例 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-ModulePSSession 參數執行 會將 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 會話會儲存在變數中 $csImport-Module會使用 中的 $csCimSession 從 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 參數等同於值為 GlobalScope 參數。

若要限制模組導出的命令,請使用 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

指定此 Cmdlet 匯入模組的範圍。

此參數可接受的值為:

  • 全域。 適用於工作階段中的所有命令。 等同於 Global 參數。
  • 本機。 只適用於目前的範圍。

根據預設,從命令提示字元、腳本檔案或 scriptblock 呼叫 Cmdlet 時 Import-Module ,所有命令都會匯入全域會話狀態。 您可以使用 -Scope Local 參數將模組內容匯入腳本或 scriptblock 範圍。

從另一個模組叫用時, Import-Module Cmdlet 會將模組中的命令匯入至呼叫端的會話狀態,包括來自巢狀模組的命令。 -Scope Global指定或-Global指出此 Cmdlet 會將模組匯入全域會話狀態,讓這些模組可供會話中的所有命令使用。

Global 參數等同於值為 GlobalScope 參數。

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

    您也可以使用 PSSessionCIMSession 參數,匯入在遠端電腦安裝的模組。 不過,使用這些模組中 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 中,模組物件的部分屬性值,例如 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