# First command
$m = Get-Module -list -Name BitsTransfer
# Second command
Get-Content $m.Path
GUID = "{8FA5064B-8479-4c5c-86EA-0D311FE48875}"
Author = "Microsoft Corporation"
CompanyName = "Microsoft Corporation"
ModuleVersion = "1.0.0.0"
Description = "Windows PowerShell File Transfer Module"
PowerShellVersion = "2.0"
CLRVersion = "2.0"
NestedModules = "Microsoft.BackgroundIntelligentTransfer.Management"
FormatsToProcess = "FileTransfer.Format.ps1xml"
RequiredAssemblies = Join-Path $psScriptRoot "Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll"
第一个命令将获取表示 BitsTransfer 模块的 PSModuleInfo 对象。 它将对象保存在 $m
变量中。
第二个命令使用 Get-Content
cmdlet 获取指定路径中的清单文件的内容。 它使用点表示法来获取存储在该对象的 Path 属性中的清单文件的路径。 输出显示了模块清单中的内容。
示例 8:列出模块目录中的文件
dir (Get-Module -ListAvailable FileTransfer).ModuleBase
Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules\FileTransfer
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/16/2008 12:36 PM en-US
-a--- 11/19/2008 11:30 PM 16184 FileTransfer.Format.ps1xml
-a--- 11/20/2008 11:30 PM 1044 FileTransfer.psd1
-a--- 12/16/2008 12:20 AM 108544 Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll
此命令将列出模块目录中的文件。 这是另一种用于在导入模块之前确定模块中的内容的方法。 某些模块可能具有帮助文件或描述该模板的自述文件。
示例 9:获取计算机上安装的模块
$s = New-PSSession -ComputerName Server01
Get-Module -PSSession $s -ListAvailable
这些命令将获取安装在 Server01 计算机上的模块。
第一条命令使用 New-PSSession
cmdlet 在 Server01 计算机上创建 PSSession。 该命令将 PSSession 保存在 $s
变量中。
第二个命令使用 Get-Module
的 PSSession 和 ListAvailable 参数来获取 $s
变量的 PSSession 中的模块。
如果通过管道将模块从其他会话传递给 Import-Module
cmdlet,则 Import-Module
将使用隐式远程处理功能将模块导入当前会话。 这等效于使用 Import-PSSession
cmdlet。 可以在当前会话中使用模块中的 cmdlet,但使用这些 cmdlet 的命令实际在远程会话中运行。 有关详细信息,请参阅 Import-Module
和 Import-PSSession
。
示例 10:管理未运行 Windows 操作系统的计算机
此示例中的命令使你能够管理未运行 Windows 操作系统的远程计算机的存储系统。 在此示例中,由于计算机的管理员已安装模块发现 WMI 提供程序,因此 CIM 命令可以使用专门用于该提供程序的默认值。
$cs = New-CimSession -ComputerName RSDGF03
Get-Module -CimSession $cs -Name Storage | Import-Module
Get-Command Get-Disk
CommandType Name ModuleName
----------- ---- ----------
Function Get-Disk Storage
Get-Disk
Number Friendly Name OperationalStatus Total Size Partition Style
------ ------------- ----------------- ---------- ---------------
0 Virtual HD ATA Device Online 40 GB MBR
第一个命令使用 New-CimSession
cmdlet 在 RSDGF03 远程计算机上创建会话。 该会话将连接到远程计算机上的 WMI。 该命令将 CIM 会话保存在 $cs
变量中。
第二个命令使用 $cs
变量中的 CIM 会话,以在 RSDGF03 计算机上运行 Get-Module
命令。 该命令使用 Name 参数指定 Storage 模块。 该命令使用管道运算符 (|
) 将存储模块发送到 Import-Module
cmdlet,后者会将其导入本地会话。
第三个命令在存储模块中的 Get-Disk
命令上运行 Get-Command
cmdlet。
将 CIM 模块导入到本地会话时,PowerShell 会将表示 CIM 模块的 CDXML 文件转换为 PowerShell 脚本,这些脚本将作为函数显示在本地会话中。
第四个命令将运行 Get-Disk
命令。 尽管该命令是在本地会话中键入的,但它实际在导入它的远程计算机上隐式运行。 该命令将获取远程计算机中的对象,并将它们返回到本地会话。
指示此 cmdlet 获取每个模块文件夹中的所有模块,包括嵌套模块、清单 (.psd1
) 文件、脚本模块 (.psm1
) 文件和二进制模块 (.dll
) 文件。 如果没有此参数,Get-Module
将仅获取每个模块文件夹中的默认模块。
Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
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 命令。
Get-Module
使用 CIM 会话连接从远程计算机获取模块。 使用 Import-Module
cmdlet 导入模块并在当前会话中使用导入模块中的命令时,这些命令实际上在远程计算机上运行。
通过使用此参数,可从未运行 Windows 操作系统的计算机和设备以及虽然具有 PowerShell 但未启用 PowerShell 远程处理的计算机中获取模块。
CimSession 参数可获取 CIMSession 中的所有模块。 但是,你只能导入基于 CIM 和基于 Cmdlet 定义 XML (CDXML) 的模块。
Type:CimSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False
-FullyQualifiedName
该值可以是模块名称、完整模块规范或模块文件的路径。
如果该值是路径,则可以是完全限定路径或相对路径。 相对路径相对于包含 using 语句的脚本进行解析。
当该值为名称或模块规范时,PowerShell 会在 PSModulePath 中搜索指定的模块。
模块规范是具有以下键的哈希表。
ModuleName
- 必需指定模块名称。
GUID
- 可选指定模块的 GUID。
还必需指定以下三个键中的至少一个。
ModuleVersion
- 指定模块的最低可接受版本。
MaximumVersion
- 指定模块的最低可接受版本。
RequiredVersion
- 指定模块所需的确切版本。 这不能与其他版本键一起使用。
不能在同一命令中将 FullyQualifiedName 参数指定为 Name 参数。
Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False
-ListAvailable
指示此 cmdlet 获取所有已安装的模块。 Get-Module
会获取 PSModulePath 环境变量中列出的路径中的模块。 在不使用此参数时,Get-Module
只获取在 PSModulePath 环境变量中列出的并在当前会话中加载的模块。 ListAvailable 不会返回有关在 PSModulePath 环境变量中找到的模块的信息,即使这些模块是在当前会话中加载的。
Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
-Name
指定此 cmdlet 获取的模块的名称或名称模式。 允许使用通配符。 也可以通过管道将名称传递给 Get-Module
。 不能在同一命令中将 FullyQualifiedName 参数指定为 Name 参数。
Name 不能接受模块 GUID 作为值。 若要通过指定 GUID 返回模块,请改用 FullyQualifiedName。
Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True
-PSEdition
获取支持指定版本的 PowerShell 的模块。
此参数的可接受值为:
Desktop
Get-Module
cmdlet 将检查 PSModuleInfo 对象的 CompatiblePSEditions 属性是否有指定值,并仅返回已设置该值的模块。
桌面版: 以 .NET Framework 为基础构建,提供与面向在完整功能 Windows 版本(如服务器核心和 Windows 桌面)上运行的 PowerShell 版本的脚本和模块的兼容性。
核心版: 以 .NET Core 为基础构建,提供与面向在缩减功能 Windows 版本(如 Nano Server 和 Windows IoT)上运行的 PowerShell 版本的脚本和模块的兼容性。
-PSSession
获取指定的用户托管的 PowerShell 会话 (PSSession) 中的模块。 输入包含会话的变量、获取会话的命令(例如 Get-PSSession
命令)或创建会话的命令(例如 New-PSSession
命令)。
当会话连接到远程计算机时,必须指定 ListAvailable 参数。
使用 PSSession 参数的 Get-Module
命令相当于使用 Invoke-Command
cmdlet 在 PSSession 中运行 Get-Module -ListAvailable
命令。
已在 Windows PowerShell 3.0 中引入了此参数。
Type:PSSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False
-Refresh
指示此 cmdlet 刷新已安装命令的缓存。 命令缓存是在会话启动时创建的。 它使 Get-Command
cmdlet 能够从未导入到会话的模块获取命令。
此参数旨在用于开发和测试方案,在这些方案中,模块的内容自会话启动后已发生更改。
在命令中指定 Refresh 参数时,必须指定 ListAvailable。
已在 Windows PowerShell 3.0 中引入了此参数。
Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False
-SkipEditionCheck
跳过 CompatiblePSEditions 字段的检查。
默认情况下,Get-Module
会忽略 %windir%\System32\WindowsPowerShell\v1.0\Modules
目录中未在 CompatiblePSEditions 字段中指定 Core
的模块。 设置此开关后,将包含不带 Core
的模块,以便返回 Windows PowerShell 模块路径下与 PowerShell v6 及更高版本不兼容的模块。
在 macOS 和 Linux 上,此参数不执行任何操作。
有关详细信息,请参阅 about_PowerShell_Editions。
Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
String
可以将模块名称通过管道传递给此 cmdlet。
PSModuleInfo
此 cmdlet 将返回表示模块的对象。 指定 ListAvailable 参数时,Get-Module
将返回一个 ModuleInfoGrouping 对象,该对象是一种具有相同属性和方法的 PSModuleInfo 对象类型。
PowerShell 包含 Get-Module
的以下别名:
所有平台:
从 Windows PowerShell 3.0 开始,将 PowerShell 中包含的核心命令打包在模块中。 Microsoft.PowerShell.Core 是例外情况,它是一个管理单元 (PSSnapin)。 默认情况下,仅将 Microsoft.PowerShell.Core 管理单元添加到会话中。 首次使用时自动导入模块,而且可以使用 Import-Module
cmdlet 导入它们。
在 Windows PowerShell 2.0 中,以及在更高版本的 PowerShell 中创建旧样式会话的托管程序中,将核心命令打包到管理单元中 (PSSnapins)。 Microsoft.PowerShell.Core 是例外情况,它始终是一个管理单元。 此外,远程会话(如 New-PSSession
cmdlet 启动的会话)是包括核心管理单元的旧样式会话。
有关使用核心模块创建更新样式会话的 CreateDefault2 方法的信息,请参阅 CreateDefault2 方法。
Get-Module
只获取存储在 PSModulePath 环境变量 ($env:PSModulePath
) 的值中的位置上的模块。 Import-Module
cmdlet 可以导入其他位置的模块,但无法使用 Get-Module
cmdlet 获取它们。
此外,从 PowerShell 3.0 开始,新属性已添加到 Get-Module
返回的对象中,这样即使在导入模块之前也可以更轻松地了解模块。 所有属性都在导入之前进行填充。 其中包括列出模块导出的命令的 ExportedCommands、ExportedCmdlets 和 ExportedFunctions 属性。
ListAvailable 参数只获取格式标准的模块,即包含至少一个文件的文件夹,且该文件的基名称与模块文件夹的名称相同。 文件的基础名称是不带文件扩展名的名称。 包含具有不同名称的文件的文件夹被视为容器,但不是模块。
若要获取作为 DLL 文件实现但未包含在模块文件夹中的模块,请同时指定 ListAvailable 和 All 参数。
若要使用 CIM 会话功能,远程计算机必须具有 WS-Management 远程处理和 Windows Management Instrumentation (WMI),后者是通用信息模型 (CIM) 标准的 Microsoft 实现。 计算机必须还具有模块发现 WMI 提供程序或具有相同基本功能的备用 WMI 提供程序。
你可以在未运行 Windows 操作系统的计算机上,以及具有 PowerShell,但未启用 PowerShell 远程处理的 Windows 计算机上使用 CIM 会话功能。
你还可以使用 CIM 参数从已启用 PowerShell 远程处理的计算机中获取 CIM 模块。 这包括本地计算机。 在本地计算机上创建 CIM 会话时,PowerShell 使用 DCOM,而不是 WMI 来创建会话。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback。
提交和查看相关反馈