Import-Module
将模块添加到当前会话。
语法
Name (默认值)
Import-Module
[-Name] <String[]>
[-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>]
PSSession
Import-Module
[-Name] <String[]>
-PSSession <PSSession>
[-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>]
CimSession
Import-Module
[-Name] <String[]>
-CimSession <CimSession>
[-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>]
[-CimResourceUri <Uri>]
[-CimNamespace <String>]
[<CommonParameters>]
FullyQualifiedName
Import-Module
[-FullyQualifiedName] <ModuleSpecification[]>
[-Global]
[-Prefix <String>]
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
FullyQualifiedNameAndPSSession
Import-Module
[-FullyQualifiedName] <ModuleSpecification[]>
-PSSession <PSSession>
[-Global]
[-Prefix <String>]
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
Assembly
Import-Module
[-Assembly] <Assembly[]>
[-Global]
[-Prefix <String>]
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
ModuleInfo
Import-Module
[-ModuleInfo] <PSModuleInfo[]>
[-Global]
[-Prefix <String>]
[-Function <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[-Force]
[-PassThru]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[-DisableNameChecking]
[-NoClobber]
[-Scope <String>]
[<CommonParameters>]
说明
Import-Module cmdlet 将一个或多个模块添加到当前会话。 导入的模块必须安装在本地计算机或远程计算机上。
从 PowerShell 3.0 开始,在模块中使用任何命令或提供程序时,已安装的模块会自动导入会话。 但是,你仍然可以使用 Import-Module 命令导入模块,并且可以使用 $PSModuleAutoloadingPreference 首选项变量启用和禁用自动模块导入。 有关模块的详细信息,请参阅 about_Modules。 有关 $PSModuleAutoloadingPreference 变量的详细信息,请参阅 about_Preference_Variables。
模块是一个包,其中包含可在 PowerShell 中使用的成员。 成员包括 cmdlet、提供程序、脚本、函数、变量和其他工具和文件。 导入模块后,可以在会话中使用模块成员。
若要导入模块,请使用 名称、程序集、ModuleInfo、MinimumVersion 和 RequiredVersion 参数来标识要导入的模块。 默认情况下,Import-Module 导入模块导出的所有成员,但可以使用 别名、函数、Cmdlet,以及 变量 参数来限制导入的成员。 还可以使用 NoClobber 参数来防止 Import-Module 导入与当前会话中的成员同名的成员。
Import-Module 仅将模块导入当前会话。 若要将模块导入所有会话,请将 Import-Module 命令添加到 PowerShell 配置文件。 有关配置文件的详细信息,请参阅 about_Profiles。
从 Windows PowerShell 3.0 开始,可以使用 Import-Module 导入通用信息模型 (CIM) 模块,其中 cmdlet 在 Cmdlet 定义 XML (CDXML) 文件中定义。 此功能允许使用在非托管代码程序集中实现的 cmdlet,例如用 C++ 编写的 cmdlet。
借助这些新功能,Import-Module cmdlet 成为管理异类企业的主要工具,其中包括运行 Windows 操作系统的计算机和运行其他操作系统的计算机。
若要管理运行已启用 PowerShell 和 PowerShell 远程处理的 Windows 操作系统的远程计算机,请在远程计算机上创建 PSSession,然后使用 Get-Module 参数获取 PSSession中的 PowerShell 模块。 导入模块,然后在当前会话中使用导入的命令时,命令会在远程计算机上的 PSSession 中隐式运行。 可以使用此策略来管理远程计算机。
可以使用类似的策略来管理未启用 PowerShell 远程处理的计算机,包括未运行 Windows 操作系统的计算机,以及启用了 PowerShell 但未启用 PowerShell 远程处理的计算机。
首先,在远程计算机上创建 CIM 会话,这是与远程计算机上的 Windows Management Instrumentation(WMI)的连接。 然后使用 的 Import-Module 参数从远程计算机导入 CIM 模块。 导入 CIM 模块并运行导入的命令时,这些命令会在远程计算机上隐式运行。 可以使用此 WMI 和 CIM 策略来管理远程计算机。
示例
示例 1:将模块的成员导入当前会话
此示例将 PSDiagnostics 模块的成员导入到当前会话中。 Name 参数名称是可选的,可以省略。
Import-Module -Name PSDiagnostics
默认情况下,Import-Module 导入模块时不会生成任何输出。 若要请求输出,请使用 PassThru 或 AsCustomObject 参数,或 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 获取 PSDiagnostics 和 Dism 模块,并将对象保存在 $m 变量中。 获取尚未导入到会话中的模块时,需要 ListAvailable 参数。
的 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 报告进度。
如果没有 详细、PassThru或 AsCustomObject 参数,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-PSTrace 模块导入 Enable-PSTrace 和 cmdlet。
Function 参数限制从模块导入的成员。 还可以使用 别名、变量和 Cmdlet 参数来限制模块导入的其他成员。
Get-Module cmdlet 获取表示 PSDiagnostics 模块的对象。
ExportedCmdlets 属性列出了模块导出的所有 cmdlet,即使它们不是全部导入的。
第三个命令中, cmdlet 的 Get-Command 参数获取从 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
它使用 的 Import-Module 参数将 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,其中列出了表中每个模块的 Name 和 ModuleType。
第二个命令使用 Import-Module cmdlet 导入 Show-Calendar 脚本模块。
该命令使用 AsCustomObject 参数请求自定义对象,并使用 PassThru 参数返回该对象。 该命令将生成的自定义对象保存在 $a 变量中。
第三个命令使用管道运算符将 $a 变量发送到 Get-Member cmdlet,该 cmdlet 获取 中 $a 的属性和方法。 输出显示 Show-Calendar() 脚本方法。
最后一个命令使用 Show-Calendar 脚本方法。 方法名称必须用引号引起来,因为它包含连字符。
示例 8:将模块重新导入同一会话
此示例演示如何在将模块重新导入同一会话时使用 的 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-Date'返回年份和年份的日期。
使用 参数获取会话中的所有 Get-Command 命令。 结果显示会话中有两个 Get-Date 命令:TestModule 模块中的函数,以及 Microsoft.PowerShell.Utility 模块中的 cmdlet。
由于函数优先于 cmdlet,因此 Get-Date 模块运行的 函数,而不是 Get-Date cmdlet。 若要运行 Get-Date 的原始版本,必须使用模块名称限定命令名称。
有关 PowerShell 中的命令优先级的详细信息,请参阅 about_Command_Precedence。
示例 10:导入模块的最低版本
Import-Module -Name PSWorkflow -MinimumVersion 3.0.0.0
此命令导入 PSWorkflow 模块。 它使用 的 Import-Module 参数仅导入模块版本 3.0.0.0 或更高版本。
还可以使用 RequiredVersion 参数导入特定版本的模块,或使用 模块 和 参数来要求脚本中特定版本的模块。
示例 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-Module 参数在 变量的会话中获取 $s 模块。 此命令等效于使用 Invoke-Command cmdlet 在 Get-Module ($s) 中的会话中运行 Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurity 命令。输出显示 NetSecurity 模块安装在计算机上,可供 $s 变量中的会话使用。
第三个命令使用 cmdlet 的 Import-Module 参数将 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 变量中。
第二个命令使用 $cs 变量中的 CIM 会话在RSDGF03计算机上运行 Import-Module 命令。 该命令使用 Name 参数来指定 存储 CIM 模块。
第三个命令在 Get-Command 模块中的 Get-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 从模块导入到当前会话中的别名。 输入以逗号分隔的别名列表。 允许使用通配符。
导入模块时,某些模块会自动将所选别名导出到会话中。 此参数允许从导出的别名中进行选择。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | True |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-ArgumentList
指定在 Import-Module 命令期间传递给脚本模块的参数或参数值的数组。 此参数仅在导入脚本模块时有效。
还可以通过其别名引用 ArgumentList 参数,参数。 有关详细信息,请参阅 about_Aliases。
参数属性
| 类型: | Object[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | 参数 |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-AsCustomObject
指示此 cmdlet 返回一个自定义对象,其中包含表示导入的模块成员的成员。 此参数仅适用于脚本模块。
使用 AsCustomObject 参数时,Import-Module 将模块成员导入会话,然后返回 PSCustomObject 对象,而不是 PSModuleInfo 对象。 可以将自定义对象保存在变量中,并使用点表示法调用成员。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Assembly
指定程序集对象的数组。 此 cmdlet 导入在指定程序集对象中实现的 cmdlet 和提供程序。 输入包含程序集对象的变量或创建程序集对象的命令。 还可以通过管道将程序集对象传递给 Import-Module。
使用此参数时,仅导入由指定程序集实现的 cmdlet 和提供程序。 如果模块包含其他文件,则不会导入这些文件,并且你可能缺少模块的重要成员。 使用此参数调试和测试模块,或者当模块作者指示使用它时。
参数属性
| 类型: | Assembly[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
Assembly
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-CimNamespace
指定公开 CIM 模块的备用 CIM 提供程序的命名空间。 默认值为模块发现 WMI 提供程序的命名空间。
使用此参数从未运行 Windows 操作系统的计算机和设备导入 CIM 模块。
此参数是在 Windows PowerShell 3.0 中引入的。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
CimSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-CimResourceUri
指定 CIM 模块的备用位置。 默认值是远程计算机上的模块发现 WMI 提供程序的资源 URI。
使用此参数从未运行 Windows 操作系统的计算机和设备导入 CIM 模块。
此参数是在 Windows PowerShell 3.0 中引入的。
参数属性
| 类型: | Uri |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
CimSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-CimSession
指定远程计算机上的 CIM 会话。 输入包含 CIM 会话的变量或获取 CIM 会话的命令,例如 Get-CimSession 命令。
Import-Module 使用 CIM 会话连接将模块从远程计算机导入当前会话。 在当前会话中使用导入模块中的命令时,这些命令实际上在远程计算机上运行。
可以使用此参数从未运行 Windows 操作系统的计算机和设备导入模块,以及具有 PowerShell 但未启用 PowerShell 远程处理的 Windows 计算机。
此参数是在 Windows PowerShell 3.0 中引入的。
参数属性
| 类型: | CimSession |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
CimSession
| Position: | Named |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Cmdlet
指定此 cmdlet 从模块导入到当前会话的 cmdlet 数组。 允许使用通配符。
导入模块时,某些模块会自动将选定的 cmdlet 导出到会话中。 此参数允许从导出的 cmdlet 中进行选择。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | True |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-DisableNameChecking
指示此 cmdlet 禁止在导入名称包括未经批准的谓词或禁止字符的 cmdlet 或函数时发出警告的消息。
默认情况下,当导入导出 cmdlet 或名称中未批准的谓词的函数时,PowerShell 会显示以下警告消息:
警告:一些导入的命令名称包括未经批准的谓词,这可能会使它们更易于发现。 使用 Verbose 参数获取更多详细信息或类型 Get-Verb 以查看已批准的谓词列表。
此消息只是警告。 仍导入完整的模块,包括不符合的命令。 尽管消息显示给模块用户,但模块作者应修复命名问题。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Force
此参数导致在当前模块顶部加载或重新加载模块
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-FullyQualifiedName
指定模块规范的完全限定名称。
参数属性
| 类型: | ModuleSpecification[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
FullyQualifiedName
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
FullyQualifiedNameAndPSSession
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Function
指定此 cmdlet 从模块导入到当前会话中的函数数组。 允许使用通配符。
导入模块时,某些模块会自动将所选函数导出到会话中。 此参数允许从导出的函数中进行选择。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | True |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Global
指示此 cmdlet 将模块导入全局会话状态,以便这些模块可用于会话中的所有命令。
默认情况下,从命令提示符、脚本文件或 scriptblock 调用 Import-Module cmdlet 时,所有命令都导入到全局会话状态。
从另一个模块调用时,Import-Module cmdlet 将模块中的命令(包括嵌套模块中的命令)导入调用方会话状态。
小窍门
应避免从模块内部调用 Import-Module。 而是将目标模块声明为父模块清单中的嵌套模块。 声明嵌套模块可以提高依赖项的可发现性。
Global 参数等效于具有全局值的 Scope 参数。
若要限制模块导出的命令,请使用脚本模块中的 Export-ModuleMember 命令。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-MaximumVersion
指定最大版本。 此 cmdlet 仅导入小于或等于指定值的模块版本。 如果没有版本限定,Import-Module 将生成错误。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
Name
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
PSSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CimSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-MinimumVersion
指定最低版本。 此 cmdlet 仅导入大于或等于指定值的模块版本。 如果没有版本限定,Import-Module 将生成错误。
默认情况下,Import-Module 导入模块而不检查版本号。
使用 MinimumVersion 参数名称或其别名版本。
若要指定确切的版本,请使用 RequiredVersion 参数。 还可以使用 模块 和 #Requires 关键字的版本 参数来要求脚本中特定版本的模块。
此参数是在 Windows PowerShell 3.0 中引入的。
参数属性
| 类型: | Version |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | 版本 |
参数集
Name
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
PSSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CimSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-ModuleInfo
指定要导入的模块对象的数组。 输入包含模块对象的变量,或获取模块对象的命令,如以下命令:Get-Module -ListAvailable。 还可以通过管道将模块对象传递给 Import-Module。
参数属性
| 类型: | PSModuleInfo[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ModuleInfo
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Name
指定要导入的模块的名称。 输入模块的名称或模块中文件的名称,例如 .psd1、.psm1、.dll或 ps1 文件。 文件路径是可选的。 不允许使用通配符。 还可以通过管道将模块名称和文件名传递给 Import-Module。
如果省略路径,Import-Module 查找保存在 $env:PSModulePath 环境变量中的路径中的模块。
请尽可能仅指定模块名称。 指定文件名时,仅导入该文件中实现的成员。 如果模块包含其他文件,则不会导入这些文件,并且你可能缺少模块的重要成员。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | True |
| 不显示: | False |
参数集
Name
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
PSSession
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CimSession
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-NoClobber
指示此 cmdlet 不会导入与当前会话中的现有命令具有相同名称的命令。 默认情况下,Import-Module 导入所有导出的模块命令。
具有相同名称的命令可以隐藏或替换会话中的命令。 若要避免会话中的命令名称冲突,请使用 前缀 或 NoClobber 参数。 有关名称冲突和命令优先级的详细信息,请参阅 about_Modules 和 about_Command_Precedence中的“模块和名称冲突”。
此参数是在 Windows PowerShell 3.0 中引入的。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | NoOverwrite |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-PassThru
返回一个对象,该对象表示你正在处理的项目。 默认情况下,此 cmdlet 不生成任何输出。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Prefix
指定此 cmdlet 添加到导入模块成员名称中的名词的前缀。
使用此参数可避免会话中不同成员具有相同名称时可能发生的名称冲突。 此参数不会更改模块,并且不会影响模块为自己的用途导入的文件。 这些模块称为嵌套模块。 此 cmdlet 仅影响当前会话中成员的名称。
例如,如果指定前缀 UTC,然后导入 Get-Date cmdlet,则该 cmdlet 在会话中称为 Get-UTCDate,并且与原始 Get-Date cmdlet 不混淆。
此参数的值优先于模块的 DefaultCommandPrefix 属性,该属性指定默认前缀。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-PSSession
指定 PowerShell 用户管理的会话(PSSession),此 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 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
PSSession
| Position: | Named |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
FullyQualifiedNameAndPSSession
| Position: | Named |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-RequiredVersion
指定此 cmdlet 导入的模块版本。 如果未安装版本,Import-Module 将生成错误。
默认情况下,Import-Module 导入模块而不检查版本号。
若要指定最低版本,请使用 MinimumVersion 参数。 还可以使用 模块 和 #Requires 关键字的版本 参数来要求脚本中特定版本的模块。
此参数是在 Windows PowerShell 3.0 中引入的。
使用 RequiredVersion 导入现有版本的 Windows 操作系统中包含的模块的脚本不会在 Windows 操作系统的未来版本中自动运行。 这是因为 Windows 操作系统的未来版本中的 PowerShell 模块版本号高于 Windows 操作系统的现有版本中的模块版本号。
参数属性
| 类型: | Version |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
Name
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
PSSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CimSession
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Scope
指定此 cmdlet 导入模块的范围。
此参数的可接受值为:
- 全局。 可用于会话中的所有命令。 等效于 Global 参数。
- 本地。 仅在当前范围内可用。
默认情况下,从命令提示符、脚本文件或 scriptblock 调用 Import-Module cmdlet 时,所有命令都导入到全局会话状态。 可以将 -Scope 参数与 本地 的值一起使用,将模块内容导入脚本或脚本块范围。
从另一个模块调用时,Import-Module cmdlet 将模块中的命令(包括嵌套模块中的命令)导入调用方会话状态。 指定 -Scope Global 或 -Global 指示此 cmdlet 将模块导入全局会话状态,以便这些模块可用于会话中的所有命令。
Global 参数等效于具有全局值的 Scope 参数。
此参数是在 Windows PowerShell 3.0 中引入的。
参数属性
| 类型: | String |
| 默认值: | Current scope |
| 接受的值: | Local, Global |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Variable
指定此 cmdlet 从模块导入到当前会话中的变量数组。 输入变量列表。 允许使用通配符。
导入模块时,某些模块会自动将所选变量导出到会话中。 此参数允许从导出的变量中进行选择。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | True |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
System.String, System.Management.Automation.PSModuleInfo, System.Reflection.Assembly
可以通过管道将模块名称、模块对象或程序集对象传递给此 cmdlet。
输出
None, System.Management.Automation.PSModuleInfo, or System.Management.Automation.PSCustomObject
此 cmdlet 返回 PSModuleInfo 或 PSCustomObject。 默认情况下,Import-Module 不会生成任何输出。 如果指定 PassThru 参数,cmdlet 将生成表示模块的 System.Management.Automation.PSModuleInfo 对象。 如果指定 AsCustomObject 参数,则会生成 PSCustomObject 对象。
备注
必须先在本地计算机上安装该模块,然后才能导入模块。 也就是说,模块目录必须复制到本地计算机可访问的目录。 有关详细信息,请参阅 about_Modules。
还可以使用 PSSession 和 CIMSession 参数导入安装在远程计算机上的模块。 但是,使用这些模块中的 cmdlet 的命令实际上在远程计算机上的远程会话中运行。
如果将同名和同一类型的成员导入到会话中,则 PowerShell 默认使用上次导入的成员。 将替换变量和别名,而原始变量不可访问。 函数、cmdlet 和提供程序只是受新成员的阴影。 可以通过使用命令管理单元、模块或函数路径的名称限定命令名称来访问它们。
若要更新从模块导入的命令的格式设置数据,请使用
Update-FormatDatacmdlet。Update-FormatData还会更新从模块导入的会话中的命令的格式设置数据。 如果模块的格式设置文件发生更改,可以运行Update-FormatData命令来更新导入命令的格式设置数据。 无需再次导入模块。从 Windows PowerShell 3.0 开始,随 PowerShell 一起安装的核心命令打包在模块中。 在 Windows PowerShell 2.0 和在更高版本的 PowerShell 中创建旧式会话的主机程序中,核心命令打包在管理单元中(PSSnapins)。 例外情况是 Microsoft.PowerShell.Core,该管理单元始终是管理单元。 此外,远程会话(例如由
New-PSSessioncmdlet 启动的会话)是包含核心管理单元的旧式会话。有关使用核心模块创建较新样式会话的 CreateDefault2 方法的信息,请参阅 CreateDefault2 方法。
Import-Module无法从另一个会话导入 PowerShell Core 模块。 PowerShell Core 模块的名称以 Microsoft.PowerShell 开头。在 Windows PowerShell 2.0 中,模块对象的一些属性值(如 ExportedCmdlet 和 NestedModules 属性值)在导入模块之前未填充,并且 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 来创建会话。