Invoke-WmiMethod
调用 WMI 方法。
语法
Invoke-WmiMethod
[-Class] <String>
[-Name] <String>
[-ArgumentList <Object[]>]
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-WmiMethod
-InputObject <ManagementObject>
[-Name] <String>
[-ArgumentList <Object[]>]
[-AsJob]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-WmiMethod
-Path <String>
[-Name] <String>
[-ArgumentList <Object[]>]
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-WmiMethod
[-Name] <String>
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-WmiMethod
[-Name] <String>
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-WmiMethod
[-Name] <String>
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
Invoke-WmiMethod cmdlet 调用 Windows Management Instrumentation (WMI) 对象的方法。
Windows PowerShell 3.0 中引入的新通用信息模型 (CIM) cmdlet 执行与 WMI cmdlet 相同的任务。 CIM cmdlet 符合 WS-Management (WSMan) 标准和 CIM 标准,该标准使 cmdlet 能够使用相同的技术来管理 Windows 计算机和运行其他操作系统的计算机。 请考虑使用 Invoke-CimMethod,而不是使用 Invoke-WmiMethodhttps://go.microsoft.com/fwlink/?LinkId=227965.
示例
示例 1:列出 WMI 对象的必需顺序
PS C:\> ([wmiclass]'Win32_Volume').GetMethodParameters('Format')
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 6
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ClusterSize : 0
EnableCompression : False
FileSystem : NTFS
Label :
QuickFormat : False
Version : 0
PSComputerName :
此命令按所需的顺序列出对象。 若要在 PowerShell 3.0 中调用 WMI,则与备用方法不同,并要求对象值以特定的顺序输入。
示例 2:启动应用程序的实例
PS C:\> ([Wmiclass]'Win32_Process').GetMethodParameters('Create')
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 3
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
CommandLine :
CurrentDirectory :
ProcessStartupInformation :
PSComputerName : PS C:\> Invoke-WmiMethod -Path win32_process -Name create -ArgumentList notepad.exe
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 2
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ProcessId : 11312
ReturnValue : 0
PSComputerName :
此命令通过调用 Win32_Process 类的 Create 方法来启动记事本实例。
ReturnValue 属性用 0 填充,ProcessId 属性用整数填充 (下一个进程 ID 号) 如果命令完成。
示例 3:重命名文件
PS C:\> Invoke-WmiMethod -Path "CIM_DataFile.Name='C:\scripts\test.txt'" -Name Rename -ArgumentList "C:\scripts\test_bu.txt"
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
此命令重命名文件。 它使用 Path 参数引用 CIM_DataFile 类的实例。 然后,它将 Rename 方法应用于该特定实例。
如果命令已完成,则 ReturnValue 属性将填充 0。
参数
-ArgumentList
指定要传递给被调用方法的参数。 此参数的值必须是 对象的数组,并且它们必须按被调用方法所需的顺序显示。 Invoke-CimCommand cmdlet 没有这些限制。
若要确定列出这些对象所采用的顺序,请运行 WMI 类上的 GetMethodParameters() 方法,如接近本主题末尾的示例 1 中所示。
重要信息:如果第一个值为包含多个元素的数组,则要求第二个值为 $null。 否则,该命令将生成一个错误,例如“Unable to cast object of type 'System.Byte' to type 'System.Array'.”。
下面的示例使用一个对象数组 ($binSD),并且后跟一个 null 值 ($null):
PS C:\>$acl = get-acl test.txt
PS C:\>$binSD = $acl。GetSecurityDescriptorBinaryForm ()
PS C:\>invoke-wmimethod -class Win32_SecurityDescriptorHelper -Name BinarySDToSDDL -argumentlist $binSD,$null
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsJob
指示此 cmdlet 将命令作为后台作业运行。 使用此参数可运行需要较长时间才能完成的命令。
使用 AsJob 参数时,该命令将返回表示后台作业的对象,然后显示命令提示符。 当作业完成时,你可以继续在此会话中工作。 如果 Invoke-WmiMethod 用于远程计算机,则作业在本地计算机上创建,并且来自远程计算机的结果将自动返回本地计算机。 若要管理作业,请使用包含 Job 名词的 cmdlet (Job cmdlet)。 若要获取作业结果,请使用 Receive-Job cmdlet。
若要将此参数用于远程计算机,必须为本地和远程计算机配置远程处理。 此外,必须使用 Windows Vista 和更高版本的 Windows 中的“以管理员身份运行”选项开始Windows PowerShell。 有关详细信息,请参阅 about_Remote_Requirements。
有关 Windows PowerShell 后台作业的详细信息,请参阅 about_Jobs 和 about_Remote_Jobs。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
指定用于 WMI 连接的身份验证级别。 此参数的可接受值为:
-1:Unchanged
0:Default
1:None(不执行身份验证。)
2:Connect(仅当客户端与应用程序建立了关系时才执行身份验证。)
3:Call(应用程序收到请求时只在每次调用的开始执行身份验证。)
4:Packet(对从客户端收到的所有数据执行身份验证。)
5:PacketIntegrity (在客户端和应用程序之间传输的所有数据都经过身份验证和验证。)
6:PacketPrivacy(使用其他身份验证等级的属性,并且所有数据都加密。)
Type: | AuthenticationLevel |
Accepted values: | Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authority
指定用于对 WMI 连接进行身份验证的授权机构。 可以指定标准Windows NT LAN Manager (NTLM) 或 Kerberos 身份验证。 若要使用 NTLM,请将授权机构设置设为 ntlmdomain:<DomainName>,其中 <DomainName> 标识有效的 NTLM 域名。 若要使用 Kerberos,请指定 kerberos:<DomainName\ServerName>。 连接到本地计算机时不能包含授权机构设置。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Class
指定包含要调用的静态方法的 WMI 类。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
以字符串数组的形式指定此 cmdlet 运行命令的计算机。 默认为本地计算机。
键入一台或多台计算机的 NetBIOS 名称、IP 地址或完全限定的域名。 若要指定本地计算机,请键入该计算机名称、句点 (.) 或 localhost。
此参数不依赖于 Windows PowerShell 远程处理。 即使你的计算机未配置为运行远程命令,你也可以使用 ComputerName 参数。
Type: | String[] |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
提示你在运行 cmdlet 之前进行确认。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
指定有权执行此操作的用户帐户。 默认为当前用户。 键入用户名,例如 User01、Domain01\User01 或 User@Contoso.com。 或者,输入 PSCredential 对象,例如 Get-Credential cmdlet 返回的对象。 键入用户名时,将会提示你输入密码。
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EnableAllPrivileges
指示此 cmdlet 在命令进行 WMI 调用之前启用当前用户的所有权限。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Impersonation
指定要使用的模拟级别。 此参数的可接受值为:
0:Default(读取本地注册表的默认模拟级别,通常设置为“3:模拟”。)
1:Anonymous(隐藏调用方的凭据。)
2:Identify(允许对象查询调用方的凭据。)
3:Impersonate(允许对象使用调用方的凭据。)
4:Delegate(允许对象允许其他对象使用调用方的凭据。)
Type: | ImpersonationLevel |
Accepted values: | Default, Anonymous, Identify, Impersonate, Delegate |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定要用作输入的 ManagementObject 对象。 使用此参数时,将忽略 除 Flag 和 Argument 参数以外的所有其他参数。
Type: | ManagementObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Locale
指定 WMI 对象的首选区域设置。 按首选顺序将 Locale 参数的值指定为 MS_<LCID> 格式的数组。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
指定要调用的方法的名称。 此参数是必需的,不能为 null 或为空。
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Namespace
与 Class 参数一起使用时,此参数指定引用的 WMI 类或对象所在的 WMI 存储库命名空间。
Type: | String |
Aliases: | NS |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定 WMI 类的 WMI 对象路径,或指定 WMI 类实例的 WMI 对象路径。 指定的类或实例必须包含 Name 参数中指定的方法。
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ThrottleLimit
指定可同时执行的 WMI 操作数的限制值。 此参数与 AsJob 参数一起使用。 节流限制仅适用于当前命令,而不适用于会话或计算机。
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 此 cmdlet 未运行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
None
此 cmdlet 不接受任何输入。
输出
None
此 cmdlet 将不生成任何输出。