[-Impersonation ] [-Authentication ] [-Locale ] [-EnableAllPrivileges] [-Authority ] [-Credential ] [-ThrottleLimit ] [-ComputerName ] [-Namespace ] [-WhatIf] [-Confirm] []
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 (WMI) 对象调用 Windows Management Instrumentation 的方法。

Windows PowerShell 3.0 中引入的新通用信息模型 (CIM) cmdlet 执行与 WMI cmdlet 相同的任务。 CIM cmdlet 符合 WS-Management (WSMan) 标准和 CIM 标准,该标准使 cmdlet 能够使用相同的技术来管理 Windows 计算机和运行其他操作系统的计算机。 请考虑使用 Invoke-CimMethod ,而不是使用 Invoke-WmiMethod

示例 1:列出 WMI 对象的必需顺序

([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:启动应用程序的实例

([Wmiclass]'Win32_Process').GetMethodParameters('Create')
__GENUS                   : 2
__CLASS                   : __PARAMETERS
__SUPERCLASS              :
__DYNASTY                 : __PARAMETERS
__RELPATH                 :
__PROPERTY_COUNT          : 3
__DERIVATION              : {}
__SERVER                  :
__NAMESPACE               :
__PATH                    :
CommandLine               :
CurrentDirectory          :
ProcessStartupInformation :
PSComputerName            :
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   :

此命令通过调用 Create Win32_Process 类的 方法启动记事本的实例。

ReturnValue 属性使用 填充, 0 ProcessId 属性使用整数填充 (下一个进程 ID 号) 如果命令完成。

示例 3:重命名文件

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 填充。

示例 4:使用“-ArgumentList”传递值数组

使用对象 $binSD 数组后 $null 跟值的示例。

$acl = get-acl test.txt
$binSD = $acl.GetSecurityDescriptorBinaryForm()
Invoke-WmiMethod -class Win32_SecurityDescriptorHelper -Name BinarySDToSDDL -ArgumentList $binSD, $null

-ArgumentList

指定要传递给被调用方法的参数。 此参数的值必须是 对象的数组,并且它们必须按被调用方法所需的顺序显示。 cmdlet Invoke-CimCommand 没有这些限制。

若要确定列出这些对象的顺序,请在靠近本主题末尾的示例 1 中对 WMI 类运行 GetMethodParameters() 方法。

如果第一个值是包含多个元素的数组,则需要第二个 值 $null 。 否则,该命令将生成错误,例如 Unable to cast object of type 'System.Byte' to type 'System.Array'. 。 请参阅上面的示例 4。

指示此 cmdlet 将命令作为后台作业运行。 使用此参数可运行需要较长时间才能完成的命令。

使用 AsJob 参数时,该命令将返回表示后台作业的对象,然后显示命令提示符。 当作业完成时,你可以继续在此会话中工作。 如果 Invoke-WmiMethod 对远程计算机使用 ,则会在本地计算机上创建作业,并且远程计算机的结果将自动返回到本地计算机。 若要管理作业,请使用包含 Job 名词的 cmdlet (作业 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 Accept pipeline input:False Accept wildcard characters:False

-Authentication

指定用于 WMI 连接的身份验证级别。 此参数的可接受值为:

  • -1 未更改
  • 0 默认
  • 1 (不进行身份验证。)
  • 2 当客户端与 application 建立关系时,才会执行连接 (身份验证。)
  • 3 调用 (身份验证仅在应用程序收到 request 时在每个调用开始时执行。)
  • 4 从 client.) 接收的所有数据执行数据包 (身份验证
  • 5 PacketIntegrity (客户端与应用程序之间传输的所有数据都经过身份验证和验证。)
  • 6 PacketPrivacy (使用其他身份验证级别的属性,并加密所有数据。)
  • Type: AuthenticationLevel Accepted values:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged Position:Named Default value:None 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 Accept pipeline input:False Accept wildcard characters:False

    -Class

    指定包含要调用的静态方法的 WMI 类。

    Type: String Position:0 Default value:None 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 Accept pipeline input:False Accept wildcard characters:False

    -Confirm

    提示你在运行 cmdlet 之前进行确认。

    Type: SwitchParameter Aliases:cf Position:Named Default value: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 Accept pipeline input:False Accept wildcard characters:False

    -EnableAllPrivileges

    指示此 cmdlet 在命令进行 WMI 调用之前启用当前用户的所有权限。

    Type: SwitchParameter Position:Named Default value:None Accept pipeline input:False Accept wildcard characters:False

    -Impersonation

    指定要使用的模拟级别。 此参数的可接受值为:

  • 0 默认 (读取默认模拟级别的本地注册表,该级别通常设置为 3 Impersonate .)
  • 1 匿名 (隐藏 caller.) 的凭据
  • 2 标识 (允许对象查询 caller.)
  • 3 模拟 (允许对象使用 caller.)
  • 4 委托 (允许对象允许其他对象使用 caller.)
  • Type: ImpersonationLevel Accepted values:Default, Anonymous, Identify, Impersonate, Delegate Position:Named Default value:None Accept pipeline input:False Accept wildcard characters:False

    -InputObject

    指定要用作输入的 ManagementObject 对象。 使用此参数时,将忽略 除 Flag Argument 参数以外的所有其他参数。

    Type: ManagementObject Position:Named Default value:None Accept pipeline input:True Accept wildcard characters:False

    -Locale

    指定 WMI 对象的首选区域设置。 将 Locale 参数的值指定为采用首选顺序格式的数组 MS_<LCID>

    Type: String Position:Named Default value:None Accept pipeline input:False Accept wildcard characters:False

    -Name

    指定要调用的方法的名称。 此参数是必需的,不能为 null 或为空。

    Type: String Position:1 Default value:None Accept pipeline input:False Accept wildcard characters:False

    -Namespace

    Class 参数一起使用时,此参数指定引用的 WMI 类或对象所在的 WMI 存储库命名空间。

    Type: String Aliases:NS Position:Named Default value:None Accept pipeline input:False Accept wildcard characters:False

    -Path

    指定 WMI 类的 WMI 对象路径,或指定 WMI 类实例的 WMI 对象路径。 指定的类或实例必须包含 Name 参数中指定的方法。

    Type: String Position:Named Default value:None Accept pipeline input:False Accept wildcard characters:False

    -ThrottleLimit

    指定可同时执行的 WMI 操作数的限制值。 此参数与 AsJob 参数一起使用。 节流限制仅适用于当前命令,而不适用于会话或计算机。

    Type: Int32 Position:Named Default value:None Accept pipeline input:False Accept wildcard characters:False

    -WhatIf

    显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

    Type: SwitchParameter Aliases:wi Position:Named Default value:False Accept pipeline input:False Accept wildcard characters:False

    此 cmdlet 不接受任何输入。

    此 cmdlet 将不生成任何输出。

  • Get-WSManInstance
  • Invoke-WSManAction
  • New-WSManInstance
  • Remove-WSManInstance
  • Get-WmiObject
  • Remove-WmiObject
  • Set-WmiInstance
  •