PowerShell for Windows Admins

Feb 27 2014   4:20PM GMT

I’m afraid you can’t do that anymore



Posted by: Richard Siddaway
Tags:
CIM
PowerShell
PowerShell 3
PowerShell Basics
PowerShell v4
WMI

In PowerShell 1.0 you could do this:

notepad

$proc = Get-WmiObject -Class Win32_Process -Filter “Name=’notepad.exe’”

$proc.Terminate()

To access the methods of the WMI class you had to get a variable representing the instance and call the method. This technique still works in PowerShell 4.0

When the CIM cmdlets were introduced in PowerShell 3.0 people assumed that they worked the same:

£> notepad

£> $proc = Get-CimInstance -ClassName Win32_Process -Filter “Name=’notepad.exe’”

£> $proc.Terminate()

Method invocation failed because [Microsoft.Management.Infrastructure.CimInstance] does not contain a method named

‘Terminate’.

At line:1 char:1

+ $proc.Terminate()

+ ~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (Terminate:String) [], RuntimeException

+ FullyQualifiedErrorId : MethodNotFound

 

The CIM cmdlets retrun inert objects – NO METHODS – so you can’t do that.

The correct way to use the CIM cmdlets is:

Get-CimInstance -ClassName Win32_Process -Filter “Name=’notepad.exe’” | Invoke-CimMethod -MethodName Terminate

 

 Comment on this Post

 
There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to: