共用方式為


Import-Module

將模組新增至目前的會話。

語法

Import-Module
      [-Global]
      [-Prefix <String>]
      [-Name] <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>]
      [-Name] <String[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-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]
      [-PassThru]
      [-AsCustomObject]
      [-MinimumVersion <Version>]
      [-MaximumVersion <String>]
      [-RequiredVersion <Version>]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      -CimSession <CimSession>
      [-CimResourceUri <Uri>]
      [-CimNamespace <String>]
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-FullyQualifiedName] <ModuleSpecification[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-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]
      [-PassThru]
      [-AsCustomObject]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      -PSSession <PSSession>
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-Assembly] <Assembly[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-ModuleInfo] <PSModuleInfo[]>
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      [<CommonParameters>]

Description

Import-Module Cmdlet 會將一或多個模組新增至目前的會話。 您匯入的模組必須安裝在本機電腦或遠端電腦上。

從 PowerShell 3.0 開始,當您在模組中使用任何命令或提供者時,已安裝的模組會自動匯入會話。 不過,您仍然可以使用 Import-Module 命令匯入模組,而且您可以使用 $PSModuleAutoloadingPreference 喜好設定變數來啟用和停用自動模組匯入。 如需模組的詳細資訊,請參閱 about_Modules。 如需 $PSModuleAutoloadingPreference 變數的詳細資訊,請參閱 about_Preference_Variables

模組是包含可在PowerShell中使用的成員的套件。 成員包括 Cmdlet、提供者、腳本、函式、變數和其他工具和檔案。 匯入模組之後,您可以在會話中使用模組成員。

若要匯入模組,請使用 NameAssemblyModuleInfoMinimumVersionRequiredVersion 參數來識別要匯入的模組。 根據預設,Import-Module 會匯入模組導出的所有成員,但您可以使用 AliasFunctionCmdletVariable 參數來限制匯入的成員。 您也可以使用 NoClobber 參數,防止 Import-Module 匯入與目前會話中成員具有相同名稱的成員。

Import-Module 只會將模組匯入目前的會話。 若要將模組匯入所有會話,請將 Import-Module 命令新增至PowerShell配置檔。 如需設定檔的詳細資訊,請參閱 about_Profiles

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

有了這些新功能,Import-Module Cmdlet 成為管理異質企業的主要工具,包括執行 Windows 操作系統的電腦,以及執行其他操作系統的電腦。

若要管理執行已啟用 PowerShell 和 PowerShell 遠端處理之 Windows 操作系統的遠端電腦,請在遠端電腦上建立 PSSession,然後使用 Get-ModulePSSession 參數,在 PSSession取得 PowerShell 模組。 當您匯入模組,然後使用目前會話中的匯入命令時,命令會在遠端電腦上的 PSSession 中隱含執行。 您可以使用此策略來管理遠端電腦。

您可以使用類似的策略來管理未啟用PowerShell遠端功能的電腦,包括未執行 Windows 作業系統的電腦,以及具有PowerShell 但未啟用 PowerShell 遠端的 Windows 電腦。

首先,在遠端計算機上建立 CIM 會話,這是遠端電腦上的 Windows Management Instrumentation (WMI) 連線。 然後使用 Import-ModuleCIMSession 參數,從遠端電腦匯入 CIM 模組。 當您匯入 CIM 模組,然後執行匯入的命令時,命令會在遠端電腦上隱含執行。 您可以使用此 WMI 和 CIM 策略來管理遠端電腦。

範例

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

本範例會將 PSDiagnostics 模組的成員匯入目前的會話。 Name 參數名稱是選擇性的,可以省略。

Import-Module -Name PSDiagnostics

根據預設,Import-Module 匯入模組時不會產生任何輸出。 若要要求輸出,請使用 PassThruAsCustomObject 參數,或 Verbose 一般參數。

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

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

Get-Module -ListAvailable | Import-Module

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

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

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

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

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

這些指令相當於使用管線運算子 (|) 將 Get-Module 命令的輸出傳送至 Import-Module

範例 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:限制匯入會話的模組成員

這個範例示範如何限制哪些模組成員會匯入會話,以及此命令對會話的影響。

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

第一個命令只會從 PSDiagnostics 模組匯入 Disable-PSTraceEnable-PSTrace Cmdlet。 Function 參數會限制從模組匯入的成員。 您也可以使用 AliasVariableCmdlet 參數來限制模組匯入的其他成員。

Get-Module Cmdlet 會取得 物件,代表 PSDiagnostics 模組。 ExportedCmdlets 屬性會列出模組匯出的所有 Cmdlet,即使它們並非全部匯入也一樣。

第三個命令中,Get-Command Cmdlet 的 Module 參數會取得從 PSDiagnostics 模組匯入的命令。 結果會確認只匯入 Disable-PSTraceEnable-PSTrace Cmdlet。

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

本範例會將 PSDiagnostics 模組匯入目前的會話、將前置詞新增至成員名稱,然後顯示前置詞的成員名稱。 前置詞只適用於目前會話中的成員。 它不會變更模組。

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

它會使用 Import-ModulePrefix 參數,將 x 前置詞新增至從模組匯入的所有成員,以及 PassThru 參數,以傳回代表匯入模組的模組物件。

Get-Command Cmdlet,以取得已從模組匯入的成員。 輸出顯示模組成員已正確加上前置詞。

範例 7:取得和使用自定義物件

這些命令示範如何取得和使用 Import-Module 傳回的自定義物件。

自定義物件包含綜合成員,代表每個匯入的模組成員。 例如,模組中的 Cmdlet 和函式會轉換成自定義物件的腳本方法。

自訂物件在腳本中非常有用。 當數個匯入的物件具有相同名稱時,它們也很有用。 使用物件的腳本方法相當於指定匯入成員的完整名稱,包括其模組名稱。

AsCustomObject 參數只能在匯入腳本模組時使用,因此第一個工作是判斷哪一個可用的模組是腳本模組。

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"()

第一個命令會使用 Get-Module Cmdlet 來取得可用的模組。 此命令會使用管線運算符將模組對象傳遞至 Format-Table Cmdlet,其中會列出數據表中每個模組的 NameModuleType

第二個命令會使用 Import-Module Cmdlet 匯入 Show-Calendar 腳本模組。 此命令會使用 AsCustomObject 參數來要求自定義物件 ,並使用 passThru 參數來傳回物件。 命令會將產生的自定義物件儲存在 $a 變數中。

第三個命令會使用管線運算符將 $a 變數傳送至 Get-Member Cmdlet,此 Cmdlet 會取得 $aPSCustomObject 的屬性和方法。 輸出會顯示 Show-Calendar() 腳本方法。

最後一個命令會使用 show-Calendar 腳本方法 。 方法名稱必須以引號括住,因為它包含連字元。

範例 8:將模組重新匯入至相同的會話

此範例示範當您將模組重新匯入至相同會話時,如何使用 Import-ModuleForce 參數。

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

第一個命令會匯入 PSDiagnostics 模組。 第二個命令會再次匯入模組,這次會使用 Prefix 參數。

使用 Force 參數,Import-Module 移除模組,然後再次匯入模組。 如果沒有此參數,會話會包含每個 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:26:12 PM

第一個 Get-Datecmdlet returns a **DateTime** object with the current date. After importing the **TestModule** module,Get-Date' 會傳回年份和日期。

使用 Get-CommandAll 參數,即可取得會話中的所有 Get-Date 命令。 結果顯示會話中有兩個 Get-Date 命令、來自 TestModule 模組的函式,以及來自 Microsoft.PowerShell.Utility 模組的 Cmdlet。

由於函式的優先順序高於 Cmdlet,因此 TestModule 模組執行的 Get-Date 函式,而不是執行 Get-Date Cmdlet。 若要執行原始版本的 Get-Date 您必須使用模組名稱來限定命令名稱。

如需 PowerShell 中命令優先順序的詳細資訊,請參閱 about_Command_Precedence

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

Import-Module -Name PSWorkflow -MinimumVersion 3.0.0.0

此命令會匯入 PSWorkflow 模組。 它會使用 Import-ModuleMinimumVersion 參數,只匯入模組的 3.0.0.0 版或更新版本。

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

範例 11:從遠端電腦匯入模組

此範例示範如何使用 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 Cmdlet 來建立 Server01 計算機的遠端會話(PSSession)。 此命令會將 PSSession 儲存在 $s 變數中。

第二個命令會使用 Get-Module Cmdlet 的 PSSession 參數,在 $s 變數的會話中取得 NetSecurity 模組。 此命令相當於使用 Invoke-Command Cmdlet 在 $s 的工作階段中執行 Get-Module 命令(Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurity)。輸出顯示 NetSecurity 模組已安裝在電腦上,且可供 $s 變數中的會話使用。

第三個命令會使用 Import-Module Cmdlet 的 PSSession 參數,將 NetSecurity 模組從 $s 變數中的會話匯入目前的會話。

第四個命令會使用 Get-Command Cmdlet 來取得以 get Get 開頭的命令,並從 NetSecurity 模組包含 防火牆。輸出會取得命令,並確認模組及其 Cmdlet 已匯入目前的工作階段。

第五個命令會使用 Get-NetFirewallRule Cmdlet,在 Server01 計算機上取得 Windows 遠端管理防火牆規則。 此命令相當於使用 Invoke-Command Cmdlet 在 $s 變數中的會話上執行 Get-NetFirewallRule 命令。

範例 12:在沒有 Windows 作業系統的情況下管理遠端電腦上的記憶體

在此範例中,因為計算機的系統管理員已安裝模組探索 WMI 提供者,因此 CIM 命令可以使用針對提供者設計的預設值。

此範例中的命令可讓您管理未執行 Windows 作業系統之遠端電腦的儲存系統。

第一個命令會使用 New-CimSession Cmdlet 在 RSDGF03遠端電腦上建立會話。 會話會連線到遠端電腦上的 WMI。 命令會將 CIM 會話儲存在 $cs 變數中。

第二個命令會使用 $cs 變數中的 CIM 工作階段,在RSDGF03電腦上執行 Import-Module 命令。 命令會使用 Name 參數來指定 記憶體 CIM 模組。

第三個命令會在 Storage 模組的 Get-Disk 命令上執行 Get-Command 命令。 當您將 CIM 模組匯入本機會話時,PowerShell 會將每個命令的 CDXML 檔案轉換成 PowerShell 腳本,其會顯示為本機會話中的函式。

第四個命令會執行 Get-Disk 命令。 雖然命令是在本機會話中輸入,但它會在匯入它的遠端電腦上隱含執行。命令會從遠端電腦取得物件,並將其傳回至本機會話。

$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 命令期間傳遞至腳本模組的自變數或參數值陣列。 只有在匯入腳本模組時,此參數才有效。

您也可以透過其別名來參考 ArgumentList 參數,args。 如需詳細資訊,請參閱 about_Aliases

類型: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 會顯示下列警告訊息:

警告:某些彙入的命令名稱包含未經核准的動詞命令,這可能會使其更容易探索。 如需詳細資訊或類型 Get-Verb,請使用 Verbose 參數來查看已核准的動詞清單。

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

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Force

此參數會使模組載入或重載至目前模組的頂端

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-FullyQualifiedName

指定模組規格的完整名稱。

類型:ModuleSpecification[]
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-Function

指定此 Cmdlet 從模組匯入至目前工作階段的函式數位。 允許通配符。

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

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

-Global

指出此 Cmdlet 會將模組匯入全域會話狀態,讓這些模組可供會話中的所有命令使用。

根據預設,從命令提示字元、腳本檔案或 scriptblock 呼叫 Import-Module Cmdlet 時,所有命令都會匯入全域會話狀態。

從另一個模組叫用時,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 只會匯入大於或等於指定值的模組版本。 如果沒有版本限定,Import-Module 會產生錯誤。

根據預設,Import-Module 匯入模組,而不檢查版本號碼。

使用 MinimumVersion 參數名稱或其別名 Version。

若要指定確切的版本,請使用 RequiredVersion 參數。 您也可以使用 Module#Requires 關鍵詞的版本 參數,在腳本中要求特定版本的模組。

此參數是在 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 環境變數的路徑中尋找模組。

盡可能只指定模組名稱。 當您指定檔名時,只會匯入該檔案中實作的成員。 如果模組包含其他檔案,則不會匯入這些檔案,而且您可能遺漏模組的重要成員。

類型:String[]
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:True

-NoClobber

指出此 Cmdlet 不會匯入與目前工作階段中現有命令具有相同名稱的命令。 根據預設,Import-Module 會匯入所有導出的模組命令。

具有相同名稱的命令可以隱藏或取代會話中的命令。 若要避免會話中的命令名稱衝突,請使用 PrefixNoClobber 參數。 如需名稱衝突和命令優先順序的詳細資訊,請參閱 about_Modulesabout_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 Core 模組。 PowerShell Core 模組的名稱開頭為 Microsoft.PowerShell。

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

類型:PSSession
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-RequiredVersion

指定此 Cmdlet 匯入的模組版本。 如果未安裝版本,Import-Module 會產生錯誤。

根據預設,Import-Module 匯入模組,而不檢查版本號碼。

若要指定最低版本,請使用 MinimumVersion 參數。 您也可以使用 Module#Requires 關鍵詞的版本 參數,在腳本中要求特定版本的模組。

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

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

類型:Version
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Scope

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

此參數可接受的值為:

  • 全域。 可供會話中的所有命令使用。 相當於 Global 參數。
  • 本機。 僅適用於目前的範圍。

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

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

Global 參數相當於具有 Global 值的 Scope 參數。

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

類型:String
接受的值:Local, Global
Position:Named
預設值:Current scope
必要:False
接受管線輸入:False
接受萬用字元:False

-Variable

指定此 Cmdlet 從模組匯入至目前工作階段的變數數位。 輸入變數清單。 允許通配符。

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

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

輸入

System.String, System.Management.Automation.PSModuleInfo, System.Reflection.Assembly

您可以使用管線將模組名稱、模組物件或元件物件傳送至此 Cmdlet。

輸出

None, System.Management.Automation.PSModuleInfo, or System.Management.Automation.PSCustomObject

此 Cmdlet 會傳回 PSModuleInfoPSCustomObject。 根據預設,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,這一定是嵌入式管理單元。 此外,遠端會話,例如由 New-PSSession Cmdlet 啟動的會話,是包含核心嵌入式管理單元的較舊樣式會話。

    如需使用核心模組建立較新樣式會話 CreateDefault2 方法的相關信息,請參閱 CreateDefault2 方法

  • Import-Module 無法從另一個會話匯入 PowerShell Core 模組。 PowerShell Core 模組的名稱開頭為 Microsoft.PowerShell。

  • 在 Windows PowerShell 2.0 中,模組物件的部分屬性值,例如 ExportedCmdletsNestedModules 屬性值,在匯入模組之前不會填入,而且無法在 PassThru 參數傳回的模組物件上使用。 在 Windows PowerShell 3.0 中,會填入所有模組屬性值。

  • 如果您嘗試匯入包含與 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),這是通用資訊模型 (CIM) 標準的Microsoft實作。 計算機也必須有模組探索 WMI 提供者或具有相同基本功能的替代 CIM 提供者。

    您可以在未執行 Windows 作業系統和具有 PowerShell 但未啟用 PowerShell 遠端功能的 Windows 電腦上,使用 CIM 工作階段功能。

    您也可以使用 CIM 參數,從已啟用 PowerShell 遠端功能的電腦取得 CIM 模組,包括本機電腦。 當您在本機計算機上建立 CIM 工作階段時,PowerShell 會使用 DCOM,而不是 WMI 來建立工作階段。