The Invoke-WmiMethod cmdlet calls the methods of Windows Management Instrumentation (WMI)
objects.
New Common Information Model (CIM) cmdlets, introduced in Windows PowerShell 3.0, perform the same
tasks as the WMI cmdlets. The CIM cmdlets comply with WS-Management (WSMan) standards and with the
CIM standard, which enables the cmdlets to use the same techniques to manage Windows computers and
those running other operating systems. Instead of using Invoke-WmiMethod, consider using
Invoke-CimMethod.
Examples
Example 1: List the required order of WMI method parameters
This command lists the required order of the objects.
This command starts an instance of Notepad by calling the Create method of the Win32_Process
class.
The ReturnValue property is populated with a 0, and the ProcessId property is populated
with an integer (the next process ID number) if the command is completed.
This command renames a file. It uses the Path parameter to reference an instance of the
CIM_DataFile class. Then, it applies the Rename method to that particular instance.
The ReturnValue property is populated with a 0 if the command is completed.
Example 4: Passing an array of values using `-ArgumentList`
An example using an array of objects $binSD followed by a $null value.
Specifies the parameters to pass to the called method. The value of this parameter must be an array
of objects, and they must appear in the order required by the called method. The Invoke-CimCommand
cmdlet does not have these limitations.
To determine the order in which to list those objects, run the GetMethodParameters() method on the
WMI class, as illustrated in Example 1, near the end of this topic.
Important
If the first value is an array that contains more than one element, a second value of $null is
required. Otherwise, the command generates an error, such as
Unable to cast object of type 'System.Byte' to type 'System.Array'.. See example 4 above.
Indicates that this cmdlet runs the command as a background job. Use this parameter to run commands
that take a long time to finish.
When you use the AsJob parameter, the command returns an object that represents the background
job and then displays the command prompt. You can continue to work in the session while the job
finishes. If Invoke-WmiMethod is used against a remote computer, the job is created on the local
computer, and the results from remote computers are automatically returned to the local computer. To
manage the job, use the cmdlets that contain the Job noun (the Job cmdlets). To get the job
results, use the Receive-Job cmdlet.
To use this parameter with remote computers, the local and remote computers must be configured for
remoting. Additionally, you must start Windows PowerShell by using the Run as administrator
option in Windows Vista and later versions of Windows. For more information, see
about_Remote_Requirements.
Specifies the authority to use to authenticate the WMI connection. You can specify standard Windows
NT LAN Manager (NTLM) or Kerberos authentication. To use NTLM, set the authority setting to
ntlmdomain:<DomainName>, where <DomainName> identifies a valid NTLM domain name. To use
Kerberos, specify kerberos:<DomainName>\<ServerName>. You cannot include the authority setting
when you connect to the local computer.
Specifies, as a string array, the computers that this cmdlet runs the command on. The default is the
local computer.
Type the NetBIOS name, an IP address, or a fully qualified domain name of one or more computers. To
specify the local computer, type the computer name, a dot (.), or localhost.
This parameter does not rely on Windows PowerShell remoting. You can use the ComputerName
parameter even if your computer is not configured to run remote commands.
Specifies a user account that has permission to perform this action. The default is the current
user. Type a user name, such as User01, Domain01\User01, or [email protected]. Or, enter a
PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you
type a user name, you will be prompted for a password.
Specifies a ManagementObject object to use as input. When this parameter is used, all other
parameters except the Flag and Argument parameters are ignored.
Specifies the WMI object path of a WMI class, or specifies the WMI object path of an instance of a
WMI class. The class or the instance that you specify must contain the method that is specified in
the Name parameter.
Specifies a throttle value for the number of WMI operations that can be executed simultaneously.
This parameter is used together with the AsJob parameter. The throttle limit applies only to the
current command, not to the session or to the computer.
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
-ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see
about_CommonParameters.
Inputs
None
This cmdlet does not accept any input.
Outputs
None
This cmdlet does not generate any output.
Notes
Windows PowerShell includes the following aliases for Invoke-WmiMethod:
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see our contributor guide.