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

说明

cmdlet 将 Import-Module 一个或多个模块添加到当前会话。 你导入的模块必须安装在本地计算机或远程计算机上。

从 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 导入通用信息模型 (CIM) 模块,其中 cmdlet 在 Cmdlet 定义 XML (CDXML) 文件中定义。 此功能允许你使用在非托管代码程序集(例如采用 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) 的连接。 然后使用 的 CIMSession 参数 Import-Module 从远程计算机导入 CIM 模块。 如果你导入 CIM 模块,然后运行导入的命令,命令将在远程计算机上隐式运行。 你可以将此 WMI 和 CIM 策略用于管理远程计算机。

示例

示例 1:将模块的成员导入当前会话

此示例将 PSDiagnostics 模块的成员导入到当前会话中。 Name 参数名称是可选的,可以省略。

Import-Module -Name PSDiagnostics

默认情况下, Import-Module 在导入模块时不会生成任何输出。 若要请求输出,请使用 PassThruAsCustomObject 参数,或者 Verbose 通用参数。

示例 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 参数。

ModuleInfo 参数 Import-Module 用于将模块导入当前会话。

这些命令等效于使用管道运算符 (|) 将命令的 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

第一个命令仅Disable-PSTracePSDiagnostics 模块导入 和 Enable-PSTrace cmdlet。 Function 参数限制从模块导入的成员。 还可以使用 AliasVariableCmdlet 参数来限制模块导入的其他成员。

cmdlet Get-Module 获取表示 PSDiagnostics 模块的对象ExportedCmdlets 属性列出模块导出的所有 cmdlet,即使它们并非全部导入。

在第三个命令中,cmdlet 的 Get-CommandModule 参数获取从 PSDiagnostics 模块导入的命令。 结果确认仅 Disable-PSTrace 导入 和 Enable-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

它使用 的 Prefix 参数 Import-Modulex 前缀添加到从模块导入的所有成员,并使用 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,该 cmdlet 列出了表中每个模块的 NameModuleType

第二个命令使用 Import-Module cmdlet 导入 Show-Calendar 脚本模块。 命令使用 AsCustomObject 参数请求自定义对象,并使用 PassThru 参数返回对象。 命令将生成的自定义对象保存在 变量中 $a

第三个命令使用管道运算符将$a变量发送到 Get-Member cmdlet,该 cmdlet 获取 中 $aPSCustomObject 的属性和方法。 输出显示 Show-Calendar () 脚本方法。

最后一个命令使用 Show-Calendar 脚本方法。 方法名称必须用引号括起来,因为它包含一个连字符。

示例 8:将模块重新导入同一会话

此示例演示如何在将模块重新导入同一会话时使用 的 Force 参数 Import-Module

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-CommandAll 参数获取Get-Date会话中的所有命令。 结果显示,会话中有两 Get-Date 个命令,一个来自 TestModule 模块的函数,一个来自 Microsoft.PowerShell.Utility 模块的 cmdlet。

由于函数优先于 cmdlet, Get-Date 因此 TestModule 模块中的函数将运行,而不是 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 参数导入模块的特定版本,或使用关键字 (keyword) 的 #RequiresModuleVersion 参数来要求脚本中的模块的特定版本。

示例 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 创建 (PSSession) Server01 计算机的远程会话。 命令将 PSSession 保存在 变量中 $s

第二个命令使用 cmdlet 的 Get-ModulePSSession 参数获取 变量中的会话中的 $sNetSecurity 模块。 此命令等效于使用 Invoke-Command cmdlet 在 (Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurity) 中的会话中$s运行Get-Module命令。输出显示 NetSecurity 模块已安装在计算机上,并且可用于 变量中的$s会话。

第三个命令使用 cmdlet 的 Import-ModulePSSession 参数将 NetSecurity 模块从 变量中的$s会话导入到当前会话中。

第四个命令使用 Get-Command cmdlet 获取以 Get 开头的命令,并包括 NetSecurity 模块中的防火墙。输出获取命令,并确认模块及其 cmdlet 已导入当前会话。

第五个命令使用 Get-NetFirewallRule cmdlet 获取 Server01 计算机上的 Windows 远程管理防火墙规则。 此命令等效于使用 Invoke-Command cmdlet 在 Get-NetFirewallRule 变量中的 $s 会话上运行命令。

示例 12:在没有 Windows 操作系统的情况下管理远程计算机上的存储

在此示例中,由于计算机的管理员已安装模块发现 WMI 提供程序,因此 CIM 命令可以使用专门用于该提供程序的默认值。

此示例中的命令使你能够管理未运行 Windows 操作系统的远程计算机的存储系统。

第一个命令使用 New-CimSession cmdlet 在RSDGF03远程计算机上创建会话。 该会话将连接到远程计算机上的 WMI。 命令将 CIM 会话保存在 变量中 $cs

第二个Import-Module命令使用 变量中的 $cs CIM 会话在RSDGF03计算机上运行命令。 该命令使用 Name 参数来指定 Storage CIM 模块。

第三个命令对 Get-CommandGet-Disk存储 模块中的 命令运行命令。 将 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 从模块导入到当前会话的别名。 输入以逗号分隔的别名列表。 允许使用通配符。

在导入模块时,某些模块会自动将选定的别名导出到你的会话中。 此参数允许你在导出的别名中进行选择。

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

-ArgumentList

指定在命令期间 Import-Module 传递给脚本模块的参数或参数值的数组。 仅当你导入脚本模块时,此参数才有效。

还可以按参数的别名 args 来引用 ArgumentList 参数。 有关详细信息,请参阅 about_Aliases

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

指定模块规范的完全限定名称。

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 仅导入大于或等于指定值的模块版本。 如果没有版本限定, Import-Module 则生成错误。

默认情况下, Import-Module 导入模块而不检查版本号。

使用 MinimumVersion 参数名称或其别名 Version。

若要指定确切的版本,请使用 RequiredVersion 参数。 还可以使用 #RequiresModuleVersion 参数关键字 (keyword) 在脚本中要求特定版本的模块。

已在 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 保存的路径中查找模块。

在可能的情况下,仅指定模块名称。 指定文件名时,将仅导入在该文件中实现的成员。 如果模块包含其他文件,则不会导入它们,并且你可能会丢失模块的重要成员。

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

-NoClobber

指示此 cmdlet 不导入与当前会话中现有命令同名的命令。 默认情况下, Import-Module 导入所有导出的模块命令。

具有相同名称的命令可以隐藏或替换会话中的命令。 若要避免会话中出现命令名称冲突,请使用 PrefixNoClobber 参数。 有关名称冲突和命令优先顺序的详细信息,请参阅 about_Modulesabout_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 Core 模块。 PowerShell Core 模块的名称以 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 参数。 还可以使用 #RequiresModuleVersion 参数关键字 (keyword) 在脚本中要求特定版本的模块。

已在 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 ,所有命令都会导入全局会话状态。 可以使用值为 Local 的 -Scope 参数将模块内容导入脚本或 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:Current scope
Required:False
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

此 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 设计的模块至少包含一个混合模块程序集(即包含托管和非托管代码(如 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 来创建会话。