{"id":13071,"date":"2011-08-08T00:01:00","date_gmt":"2011-08-08T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2011\/08\/08\/learn-four-ways-to-kill-a-process-using-powershell-and-wmi\/"},"modified":"2011-08-08T00:01:00","modified_gmt":"2011-08-08T00:01:00","slug":"learn-four-ways-to-kill-a-process-using-powershell-and-wmi","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/learn-four-ways-to-kill-a-process-using-powershell-and-wmi\/","title":{"rendered":"Learn Four Ways to Kill a Process Using PowerShell and WMI"},"content":{"rendered":"<p><strong>Summary<\/strong>: Microsoft Scripting Guy Ed Wilson shows four ways to kill a process by using Windows PowerShell and WMI.<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" title=\"Hey, Scripting Guy! Question\" border=\"0\" alt=\"Hey, Scripting Guy! Question\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/q-for-powertip.jpg\" width=\"34\" height=\"34\" \/>Hey, Scripting Guy! I have been playing around with your scripts that explore WMI methods and WMI writable properties, but I am having problems calling the WMI methods. Can you help me?<\/p>\n<p>&mdash;ET<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" title=\"Hey, Scripting Guy! Answer\" border=\"0\" alt=\"Hey, Scripting Guy! Answer\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/a-for-powertip.jpg\" width=\"34\" height=\"34\" \/>Hello ET,<\/p>\n<p>Microsoft Scripting Guy, Ed Wilson, is here. The Scripting Wife and I are super excited! Tomorrow night (August 9, 2011) we are going to appear at the <a href=\"http:\/\/powershellgroup.org\/corpus.tx\">Corpus Christi PowerShell User Group in Corpus Christi, Texas<\/a>. This is their first meeting, and we hope to get them started out right. The group president, Mark Adam Carter, has been really busy getting everything set up for this meeting. If you are in the neighborhood, plan on stopping by. It will be a <i>great<\/i> meeting!<\/p>\n<p>I wrote that series of articles you refer to as leadup to the 2011 Scripting Games. The series itself consisted of four articles:<\/p>\n<ul>\n<li><a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2011\/03\/10\/use-powershell-to-find-wmi-classes-that-contain-methods.aspx\">Use PowerShell to Find WMI Classes That Contain Methods<\/a><\/li>\n<li><a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2011\/03\/11\/use-powershell-to-find-writable-wmi-properties.aspx\">Use PowerShell to Find Writable WMI Properties<\/a><\/li>\n<li><a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2011\/03\/12\/explore-wmi-methods-and-properties-via-powershell-script.aspx\">Explore WMI Methods and Properties Via PowerShell Script<\/a><\/li>\n<li><a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2011\/03\/13\/get-all-methods-and-writable-properties-from-all-wmi-classes.aspx\">Get All Methods and Writable Properties from All WMI Classes<\/a><\/li>\n<\/ul>\n<p>ET, phone home. Just kidding. ET, the listing of all methods and writable properties from all WMI classes is a very good place to start, if you are looking to call some WMI methods. One reason for this is that the available classes varies from version to version of the operating system. In addition, the available classes will vary depending on which options are installed. The other thing to keep in mind is that some classes have added additional methods to classes in later versions of the operating system. Examples of this are the <b>Enable<\/b> and <b>Disable<\/b> methods that are available in the <b>Win32_NetworkAdapter<\/b> WMI class. These methods were added to Windows Vista. I wrote about these methods in <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2008\/09\/29\/how-can-i-enable-or-disable-my-network-adapter.aspx\">How Can I Enable or Disable My Network Adapter<\/a>? blog post.<\/p>\n<p>There are actually several ways to call WMI methods in Windows PowerShell. One reason for this is that some WMI methods are <i>instance methods<\/i>, which means they only work on an instance of the class. Other methods are <i>static methods<\/i>, which means they do not operate on an instance of the class. For example, the <b>Terminate<\/b><i> <\/i>method from the <b>Win32_Process<\/b> class is an instance method&mdash;it will operate only against a specific instance of the <b>Win32_Process<\/b>. If I do not have a reference to a process, I cannot terminate the process. On the other hand, if I want to create<i> <\/i>a new instance of a <b>Win32_Process<\/b> class, I do not grab a reference to an instance of the class. For example, I do not grab an instance of Calculator to create an instance of Notepad. Therefore, I need a static method that is always available.<\/p>\n<p>ET, let me illustrate the first of these two principles&mdash;instance methods and static methods&mdash;with a short example (I will talk about static methods tomorrow). First, I create an instance of Notepad. I then use the <b>Get-Process<\/b> cmdlet to view the process (<b>gps<\/b> is an alias for the <b>Get-Process<\/b> cmdlet). This is shown here:<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; notepad<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; Get-WmiObject win32_process -Filter &#8220;name = &#8216;notepad.exe'&#8221;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">__GENUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2<\/p>\n<p style=\"padding-left: 30px\">__CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Win32_Process<\/p>\n<p style=\"padding-left: 30px\">__SUPERCLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : CIM_Process<\/p>\n<p style=\"padding-left: 30px\">__DYNASTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : CIM_ManagedSystemElement<\/p>\n<p style=\"padding-left: 30px\">__RELPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Win32_Process.Handle=&#8221;588&#8243;<\/p>\n<p style=\"padding-left: 30px\">__PROPERTY_COUNT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 45<\/p>\n<p style=\"padding-left: 30px\">__DERIVATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {CIM_Process, CIM_LogicalElement, CIM_ManagedSyste<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mElement}<\/p>\n<p style=\"padding-left: 30px\">__SERVER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NEWMRED<\/p>\n<p style=\"padding-left: 30px\">__NAMESPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : root\\cimv2<\/p>\n<p style=\"padding-left: 30px\">__PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : \\\\NEWMRED\\root\\cimv2:Win32_Process.Handle=&#8221;588&#8243;<\/p>\n<p style=\"padding-left: 30px\">Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : notepad.exe<\/p>\n<p style=\"padding-left: 30px\">CommandLine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &#8220;C:\\Windows\\system32\\notepad.exe&#8221;<\/p>\n<p style=\"padding-left: 30px\">CreationClassName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Win32_Process<\/p>\n<p style=\"padding-left: 30px\">CreationDate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 20110802191720.281486-240<\/p>\n<p style=\"padding-left: 30px\">CSCreationClassName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Win32_ComputerSystem<\/p>\n<p style=\"padding-left: 30px\">CSName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NEWMRED<\/p>\n<p style=\"padding-left: 30px\">Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: notepad.exe<\/p>\n<p style=\"padding-left: 30px\">ExecutablePath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\\Windows\\system32\\notepad.exe<\/p>\n<p style=\"padding-left: 30px\">ExecutionState&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">Handle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 588<\/p>\n<p style=\"padding-left: 30px\">HandleCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 61<\/p>\n<p style=\"padding-left: 30px\">InstallDate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">KernelModeTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 156001<\/p>\n<p style=\"padding-left: 30px\">MaximumWorkingSetSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1380<\/p>\n<p style=\"padding-left: 30px\">MinimumWorkingSetSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 200<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : notepad.exe<\/p>\n<p style=\"padding-left: 30px\">OSCreationClassName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Win32_OperatingSystem<\/p>\n<p style=\"padding-left: 30px\">OSName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Microsoft Windows 7 Ultimate |C:\\Windows|\\Device\\H<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arddisk0\\Partition2<\/p>\n<p style=\"padding-left: 30px\">OtherOperationCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 67<\/p>\n<p style=\"padding-left: 30px\">OtherTransferCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 198<\/p>\n<p style=\"padding-left: 30px\">PageFaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1362<\/p>\n<p style=\"padding-left: 30px\">PageFileUsage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1972<\/p>\n<p style=\"padding-left: 30px\">ParentProcessId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 6324<\/p>\n<p style=\"padding-left: 30px\">PeakPageFileUsage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1972<\/p>\n<p style=\"padding-left: 30px\">PeakVirtualSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 72261632<\/p>\n<p style=\"padding-left: 30px\">PeakWorkingSetSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 5308<\/p>\n<p style=\"padding-left: 30px\">Priority&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 8<\/p>\n<p style=\"padding-left: 30px\">PrivatePageCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2019328<\/p>\n<p style=\"padding-left: 30px\">ProcessId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 588<\/p>\n<p style=\"padding-left: 30px\">QuotaNonPagedPoolUsage&nbsp;&nbsp;&nbsp;&nbsp; : 7<\/p>\n<p style=\"padding-left: 30px\">QuotaPagedPoolUsage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 149<\/p>\n<p style=\"padding-left: 30px\">QuotaPeakNonPagedPoolUsage : 7<\/p>\n<p style=\"padding-left: 30px\">QuotaPeakPagedPoolUsage&nbsp;&nbsp;&nbsp; : 150<\/p>\n<p style=\"padding-left: 30px\">ReadOperationCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">ReadTransferCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">SessionId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1<\/p>\n<p style=\"padding-left: 30px\">Status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">TerminationDate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">ThreadCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1<\/p>\n<p style=\"padding-left: 30px\">UserModeTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">VirtualSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 72261632<\/p>\n<p style=\"padding-left: 30px\">WindowsVersion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 6.1.7601<\/p>\n<p style=\"padding-left: 30px\">WorkingSetSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 5435392<\/p>\n<p style=\"padding-left: 30px\">WriteOperationCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">WriteTransferCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">ProcessName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : notepad.exe<\/p>\n<p style=\"padding-left: 30px\">Handles&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 61<\/p>\n<p style=\"padding-left: 30px\">VM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 72261632<\/p>\n<p style=\"padding-left: 30px\">WS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 5435392<\/p>\n<p style=\"padding-left: 30px\">Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\\Windows\\system32\\notepad.exe<\/p>\n<p>&nbsp;<\/p>\n<p>After I have the instance of the <b>notepad<\/b> process I want to terminate, I have at least four choices:<\/p>\n<ol>\n<li>I can call the method directly using dotted notation (because there is only one instance of the <b>notepad<\/b> process).<\/li>\n<li>I can store the reference in a variable, and then terminate it directly.<\/li>\n<li>I can use the <b>Invoke-WMIMethod<\/b> cmdlet.<\/li>\n<li>I can use the <b>[WMI]<\/b> type accelerator.<\/li>\n<\/ol>\n<p>You will notice that each time the method is called, a <b>ReturnValue<\/b> property is returned from the method call. This value is used to determine if the method completed successfully. Return codes are documented for the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa393907(VS.85).aspx\"><b>Terminate<\/b> method on MSDN<\/a> (each method will have its return codes detailed on MSDN):<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; (Get-WmiObject win32_process -Filter &#8220;name = &#8216;notepad.exe'&#8221;).Terminate()<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">__GENUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2<\/p>\n<p style=\"padding-left: 30px\">__CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__SUPERCLASS&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__DYNASTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__RELPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PROPERTY_COUNT : 1<\/p>\n<p style=\"padding-left: 30px\">__DERIVATION&nbsp;&nbsp;&nbsp;&nbsp; : {}<\/p>\n<p style=\"padding-left: 30px\">__SERVER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__NAMESPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">ReturnValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; notepad<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a = Get-WmiObject win32_process -Filter &#8220;name = &#8216;notepad.exe'&#8221;<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a.Terminate()<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">__GENUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2<\/p>\n<p style=\"padding-left: 30px\">__CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__SUPERCLASS&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__DYNASTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__RELPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PROPERTY_COUNT : 1<\/p>\n<p style=\"padding-left: 30px\">__DERIVATION&nbsp;&nbsp;&nbsp;&nbsp; : {}<\/p>\n<p style=\"padding-left: 30px\">__SERVER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__NAMESPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">ReturnValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p>&nbsp;<\/p>\n<p>If I want to use the Windows PowerShell <b>Invoke-WMIMethod<\/b> cmdlet to call an instance method, I must pass a path to the instance to be operated upon. The easiest way to obtain the path to the instance is to first perform a WMI query, and then use the <b>__RelPath<\/b> system property. The <b>__RelPath<\/b> system property contains the relative path to the instance of the class. This is shown here:<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; notepad<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a = Get-WmiObject win32_process -Filter &#8220;name = &#8216;notepad.exe'&#8221;<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a.__RELPATH<\/p>\n<p style=\"padding-left: 30px\">Win32_Process.Handle=&#8221;5676&#8243;<\/p>\n<p>&nbsp;<\/p>\n<p>If I am working against a remote machine, I will want the complete path to the instance. The complete path includes the computer name, the WMI namespace, and the class and the key to the class. The complete path is shown in the <b>__Path<\/b> system property as shown here (do not get confused&mdash;the <b>Win32_Process<\/b> WMI class also contains a <b>path<\/b> property):<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a.__path<\/p>\n<p style=\"padding-left: 30px\">\\\\NEWMRED\\root\\cimv2:Win32_Process.Handle=&#8221;5676&#8243;<\/p>\n<p>&nbsp;<\/p>\n<p>As shown here, I first create an instance of the <b>notepad<\/b> process, use the <b>Get-WmiObject<\/b> cmdlet to retrieve that instance of the process, display the value of the <b>__RELPATH<\/b> property, and then call the <b>Invoke-WmiMethod<\/b> cmdlet. When calling the <b>Invoke-WmiMethod<\/b> cmdlet, I pass the path to the instance and the name of the method to utilize. This is shown in the following commands:<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; notepad<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a = Get-WmiObject win32_process -Filter &#8220;name = &#8216;notepad.exe'&#8221;<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a.__RELPATH<\/p>\n<p style=\"padding-left: 30px\">Win32_Process.Handle=&#8221;2008&#8243;<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; Invoke-WmiMethod -Path $a.__RELPATH -Name terminate<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">__GENUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2<\/p>\n<p style=\"padding-left: 30px\">__CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__SUPERCLASS&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__DYNASTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__RELPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PROPERTY_COUNT : 1<\/p>\n<p style=\"padding-left: 30px\">__DERIVATION&nbsp;&nbsp;&nbsp;&nbsp; : {}<\/p>\n<p style=\"padding-left: 30px\">__SERVER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__NAMESPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">ReturnValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p>&nbsp;<\/p>\n<p>Another way to call an instance method is to use the <b>[WMI]<\/b> type accelerator, which works with WMI instances. Therefore, if I pass a path to the <b>[WMI]<\/b> type accelerator, I can call instance methods directly. In the example that appears here, I start an instance of the <b>notepad<\/b> process. Next, I use the <b>Get-WmiObject<\/b> cmdlet to retrieve all instances (there is only one instance) of <b>notepad<\/b>. Next, I pass the value of the <b>__RELPATH<\/b> system property to the <b>[WMI]<\/b> type accelerator. This command returns all of the properties associated with <b>Win32_Process<\/b> (the same properties seen earlier in this article) for the specific instance of <b>Win32_Process<\/b> that is indicated by the <b>__RelPath<\/b> system property. I therefore select only the <b>name<\/b> property from the object. To this point, I have illustrated that I can retrieve a specific instance of a <b>Win32_Process<\/b> WMI class via the <b>[WMI]<\/b> type accelerator. Therefore, it is time to call the <b>Terminate<\/b> method. This technique is shown here:<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; notepad<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; $a = Get-WmiObject win32_process -Filter &#8220;name = &#8216;notepad.exe'&#8221;<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; [wmi]$a.__RELPATH | select name<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">name<\/p>\n<p style=\"padding-left: 30px\">&#8212;-<\/p>\n<p style=\"padding-left: 30px\">notepad.exe<\/p>\n<p style=\"padding-left: 30px\">PS C:\\&gt; ([wmi]$a.__RELPATH).terminate()<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">__GENUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2<\/p>\n<p style=\"padding-left: 30px\">__CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__SUPERCLASS&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__DYNASTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : __PARAMETERS<\/p>\n<p style=\"padding-left: 30px\">__RELPATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PROPERTY_COUNT : 1<\/p>\n<p style=\"padding-left: 30px\">__DERIVATION&nbsp;&nbsp;&nbsp;&nbsp; : {}<\/p>\n<p style=\"padding-left: 30px\">__SERVER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__NAMESPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">__PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">ReturnValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p>&nbsp;<\/p>\n<p>This series of commands and their associated output are shown in the following figure.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7317.HSG-8-8-11-1.png\"><img decoding=\"async\" style=\"border: 0px\" title=\"Image of series of commands and associated output\" alt=\"Image of series of commands and associated output\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7317.HSG-8-8-11-1.png\" \/><\/a><\/p>\n<p>ET, that is all there is to using WMI instance methods. WMI Week will continue tomorrow when I will talk about working with WMI Static methods.<\/p>\n<p>&nbsp;<\/p>\n<p>I invite you to follow me on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\" target=\"_blank\">Twitter<\/a> and <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\">Facebook<\/a>. If you have any questions, send email to me at <a href=\"mailto:scripter@microsoft.com\" target=\"_blank\">scripter@microsoft.com<\/a>, or post your questions on the <a href=\"http:\/\/bit.ly\/scriptingforum\" target=\"_blank\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.<\/p>\n<p><b>Ed Wilson, Microsoft Scripting Guy<\/b><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Microsoft Scripting Guy Ed Wilson shows four ways to kill a process by using Windows PowerShell and WMI. &nbsp; Hey, Scripting Guy! I have been playing around with your scripts that explore WMI methods and WMI writable properties, but I am having problems calling the WMI methods. Can you help me? &mdash;ET &nbsp; Hello [&hellip;]<\/p>\n","protected":false},"author":596,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[3,4,45,6],"class_list":["post-13071","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-scripting-guy","tag-scripting-techniques","tag-windows-powershell","tag-wmi"],"acf":[],"blog_post_summary":"<p>Summary: Microsoft Scripting Guy Ed Wilson shows four ways to kill a process by using Windows PowerShell and WMI. &nbsp; Hey, Scripting Guy! I have been playing around with your scripts that explore WMI methods and WMI writable properties, but I am having problems calling the WMI methods. Can you help me? &mdash;ET &nbsp; Hello [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/13071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/596"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=13071"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/13071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=13071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=13071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=13071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}