<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Steve Schofield Weblog : WMI</title><link>http://weblogs.asp.net/steveschofield/archive/tags/WMI/default.aspx</link><description>Tags: WMI</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Use Powershell, WMI to retrieve DNS search order, Use Active Directory for list of computers.</title><link>http://weblogs.asp.net/steveschofield/archive/2009/08/01/use-powershell-wmi-to-retrieve-dns-search-order-use-active-directory-for-list-of-computers.aspx</link><pubDate>Sat, 01 Aug 2009 19:09:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7159435</guid><dc:creator>steve schofield</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/steveschofield/rsscomments.aspx?PostID=7159435</wfw:commentRss><comments>http://weblogs.asp.net/steveschofield/archive/2009/08/01/use-powershell-wmi-to-retrieve-dns-search-order-use-active-directory-for-list-of-computers.aspx#comments</comments><description>&lt;P&gt;# ********************* Global variables *********************&lt;BR&gt;$sb =&amp;nbsp; new-object System.Text.StringBuilder&lt;BR&gt;$sbErrors =&amp;nbsp; new-object System.Text.StringBuilder&lt;/P&gt;
&lt;P&gt;# ********************* Defining functions *********************&lt;BR&gt;function GetListOfComputer&lt;BR&gt;{&lt;BR&gt;$strCategory = "computer"&lt;BR&gt;$objDomain = New-Object System.DirectoryServices.DirectoryEntry&lt;BR&gt;$objSearcher = New-Object System.DirectoryServices.DirectorySearcher&lt;/P&gt;
&lt;P&gt;$objSearcher.SearchRoot = $objDomain&lt;BR&gt;$objSearcher.Filter = ("(objectCategory=$strCategory)")&lt;/P&gt;
&lt;P&gt;$colProplist = "name"&lt;BR&gt;foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}&lt;/P&gt;
&lt;P&gt;$colResults = $objSearcher.FindAll()&lt;/P&gt;
&lt;P&gt;foreach ($objResult in $colResults)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;$objComputer = $objResult.Properties; $objComputer.name&lt;BR&gt;&amp;nbsp;&amp;nbsp;[string]$CN = $objComputer.name&lt;BR&gt;&amp;nbsp;&amp;nbsp;$ipaddress = Ping-Address $objComputer.name&lt;BR&gt;&amp;nbsp;&amp;nbsp;FOREACH-OBJECT {LogInfo $CN $ipaddress}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;function Ping-Address ([string]$strComputerName)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;$ipaddress = [System.Net.Dns]::GetHostbyName("$strComputerName") | select AddressList&lt;BR&gt;&amp;nbsp;$strGetIPAddress = $ipaddress.AddressList[0].IpAddressToString&lt;BR&gt;&amp;nbsp;Return $strGetIPAddress&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;function LogInfo ([string]$strServerName, [string]$strIPAddress)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; Write-Host $strServerName + "," + $strIPAddress&lt;BR&gt;&amp;nbsp; $pingresult = Get-WmiObject win32_pingstatus -Filter "address='$strIPAddress'"&lt;BR&gt;&amp;nbsp; $error.Clear()&lt;BR&gt;&amp;nbsp; $ErrorActionPreference = "SilentlyContinue"&lt;BR&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp; if($pingresult.statuscode -eq 0) &lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; trap [Exception] {continue}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $colItems = get-wmiobject -query "Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = 1" -namespace "root\cimv2" -computername $strIPAddress&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($objItem in $colItems) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $strCaption =&amp;nbsp; $objItem.Caption&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-host $strCaption&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $strDescription =&amp;nbsp; $objItem.Description&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-host $strDescription&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $strDNSServerSearchOrder = $objItem.DNSServerSearchOrder&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-host $strDNSServerSearchOrder&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = $strServerName + "," + $strIPAddress + "," + $strDNSServerSearchOrder + "," + $strCaption + "," + $strDescription + "`r"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sb.Append($result)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; else &lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "Cannot connect:" + $strServerName + "," + $strIPAddress&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sbErrors.AppendLine($strServerName + "," + $strIPAddress + "`r")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;# ********************* Get list of Computers and call function to get data *********************&lt;BR&gt;GetListOfComputer&lt;/P&gt;
&lt;P&gt;# ********************* Write out data *********************&lt;BR&gt;write-output $sb.ToString() &amp;gt;E:\Temp\ComputerList.txt &lt;BR&gt;write-output $sbErrors.ToString() &amp;gt;E:\Temp\ComputerListNotFound.txt &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7159435" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/steveschofield/archive/tags/WMI/default.aspx">WMI</category><category domain="http://weblogs.asp.net/steveschofield/archive/tags/powershell/default.aspx">powershell</category></item><item><title>Powershell Script, WMI to get DNS settings.</title><link>http://weblogs.asp.net/steveschofield/archive/2008/08/22/powershell-script-wmi-to-get-dns-settings.aspx</link><pubDate>Sat, 23 Aug 2008 02:36:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6554429</guid><dc:creator>steve schofield</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/steveschofield/rsscomments.aspx?PostID=6554429</wfw:commentRss><comments>http://weblogs.asp.net/steveschofield/archive/2008/08/22/powershell-script-wmi-to-get-dns-settings.aspx#comments</comments><description>A while ago I wrote my disappointment about Powershell and trying to pick up the syntax. I've scripted for years with WSH / VBS, ASP, ASP.NET, VB.NET and some C#. I was used to Visual Studio and the rich debugging support. Coming from a web developer...(&lt;a href="http://weblogs.asp.net/steveschofield/archive/2008/08/22/powershell-script-wmi-to-get-dns-settings.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6554429" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/steveschofield/archive/tags/WMI/default.aspx">WMI</category><category domain="http://weblogs.asp.net/steveschofield/archive/tags/powershell/default.aspx">powershell</category></item><item><title>IIS7 - post #10 - Connecting to remote Longhorn server using WMI &amp; root\WebAdministration namespace.</title><link>http://weblogs.asp.net/steveschofield/archive/2006/10/08/IIS7-_2D00_-post-_2300_10.aspx</link><pubDate>Sun, 08 Oct 2006 21:29:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:637739</guid><dc:creator>steve schofield</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/steveschofield/rsscomments.aspx?PostID=637739</wfw:commentRss><comments>http://weblogs.asp.net/steveschofield/archive/2006/10/08/IIS7-_2D00_-post-_2300_10.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;m using a machine running Vista RC1 to query my remote&amp;nbsp;Longhorn RC1 server.&amp;nbsp; The code samples listed below return information&amp;nbsp;&lt;strong&gt;Worker Processes&lt;/strong&gt; and helps &lt;strong&gt;recycle an application pool.&amp;nbsp; &lt;/strong&gt;To recycle the app pool, I use&amp;nbsp;&lt;strong&gt;Win32_Process&lt;/strong&gt; class to start an&amp;nbsp;&lt;strong&gt;AppCmd.exe&lt;/strong&gt;.&amp;nbsp;&amp;nbsp;One thing I found&amp;nbsp;when connecting to a remote server is&amp;nbsp;use the &lt;strong&gt;Management.AuthenticationLevel.PacketPrivacy &lt;/strong&gt;enum.&amp;nbsp; This property allows you to connect&amp;nbsp;otherwise you&amp;#39;ll get &lt;strong&gt;Access Denied.&amp;nbsp;&amp;nbsp; &lt;/strong&gt;This property is part of the &lt;strong&gt;System.Management.ConnectionOptions&lt;/strong&gt; namespace.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&amp;#39;Here is a code sample&lt;br /&gt;&lt;/strong&gt;Dim options As New System.Management.ConnectionOptions()&lt;br /&gt;options.Username = strUID&lt;br /&gt;options.Password = strPWD&lt;br /&gt;options.Impersonation = Management.ImpersonationLevel.Impersonate&lt;br /&gt;options.Authentication = Management.AuthenticationLevel.PacketPrivacy&lt;/p&gt;&lt;p&gt;I tried using&amp;nbsp;&lt;strong&gt;\root\WebAdministration&lt;/strong&gt;&amp;nbsp;to recycle app pools via WMI but I ran into an&amp;nbsp;issue.&amp;nbsp;&amp;nbsp;This is the error. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;quot;Access to the root\WebAdministration namespace was denied because the namespace is marked with RequiresEncryption but the script or application attempted to connect to this namespace with an authentication level below Pkt_Privacy. Change the authentication level to Pkt_Privacy and run the script or application again.&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Here is&amp;nbsp;the thread &lt;a href="http://forums.iis.net/thread/1421721.aspx"&gt;http://forums.iis.net/thread/1421721.aspx&lt;/a&gt;, hopefully we&amp;#39;ll have an&amp;nbsp;answer.&amp;nbsp; Using&amp;nbsp;the&amp;nbsp;&lt;strong&gt;Win32_Process&lt;/strong&gt; namespace to launch&amp;nbsp;&lt;strong&gt;AppCmd.exe&lt;/strong&gt; was a&amp;nbsp;workaround.&amp;nbsp;&amp;nbsp;I posted a couple other threads that are handy using WMI and the &lt;strong&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.management.aspx"&gt;System.Management&lt;/a&gt;&lt;/strong&gt; namespace to authenticate and connect to a remote server.&amp;nbsp; Check out my &lt;strong&gt;WMI&lt;/strong&gt; tag.&amp;nbsp; Here are the code samples.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Return Worker Process information.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; Sub Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Whatever3(&amp;quot;x.x.x.x&amp;quot;, &amp;quot;lh5600\Administrator&amp;quot;, &amp;quot;MyPassword&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; Function Whatever3(ByVal ServerName As String, ByVal strUID As String, ByVal strPWD As String) As String&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Using System.Management to retrieve WMI / IIS7 info.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Define the WMI connection information&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim options As New System.Management.ConnectionOptions()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Username = strUID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Password = strPWD&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Impersonation = Management.ImpersonationLevel.Impersonate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Authentication = Management.AuthenticationLevel.PacketPrivacy&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Define the Scope information / Note the path defined.&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim scope As System.Management.ManagementScope&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scope = New System.Management.ManagementScope(&amp;quot;\\&amp;quot; &amp;amp; ServerName &amp;amp; &amp;quot;\root\WebAdministration&amp;quot;, options)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Define Query and Searcher objects&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim WMIQuery As New System.Management.SelectQuery(&amp;quot;SELECT * FROM WorkerProcess&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim searcher As New System.Management.ManagementObjectSearcher(scope, WMIQuery)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Connect to WMI&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scope.Connect()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Write the list of&amp;nbsp;Worker Process info&amp;nbsp;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each queryObj As Management.ManagementObject In searcher.Get()&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;-----------------------------------&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;WorkerProcess instance&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;-----------------------------------&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;ApplicationPool: {0}&amp;quot;, queryObj(&amp;quot;ApplicationPool&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch err As Management.ManagementException&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;An error occurred while querying for WMI data: &amp;quot; &amp;amp; err.Message)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Recycle DefaultAppPool using AppCMD and WMI&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Whatever4(&amp;quot;x,x,x,x&amp;quot;, &amp;quot;lh5600\Administrator&amp;quot;, &amp;quot;MyPassword!&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Function Whatever4(ByVal ServerName As String, ByVal strUID As String, ByVal strPWD As String) As String&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim options As New System.Management.ConnectionOptions&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Username = strUID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Password = strPWD&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Authentication = Management.AuthenticationLevel.PacketPrivacy&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim path As New System.Management.ManagementPath(&amp;quot;\\&amp;quot; &amp;amp; ServerName &amp;amp; &amp;quot;\root\cimv2:Win32_Process&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim scope As New System.Management.ManagementScope(path, options)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scope.Connect()&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim opt As New System.Management.ObjectGetOptions()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim classInstance As New System.Management.ManagementClass(scope, path, opt)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim inParams As System.Management.ManagementBaseObject = classInstance.GetMethodParameters(&amp;quot;Create&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inParams(&amp;quot;CommandLine&amp;quot;) = &amp;quot;c:\windows\system32\inetsrv\appcmd recycle apppool defaultapppool&amp;quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;#39; Execute the method and obtain the return values.&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim outParams As System.Management.ManagementBaseObject = classInstance.InvokeMethod(&amp;quot;Create&amp;quot;, inParams, Nothing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return &amp;quot;ReturnValue:&amp;quot; &amp;amp; outParams(&amp;quot;returnValue&amp;quot;) &amp;amp; &amp;quot; Process ID: {0}&amp;quot; &amp;amp; outParams(&amp;quot;processId&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Happy IIS7 coding!!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Steve Schofield&lt;br /&gt;Microsoft MVP - IIS&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=637739" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/steveschofield/archive/tags/IIS/default.aspx">IIS</category><category domain="http://weblogs.asp.net/steveschofield/archive/tags/WMI/default.aspx">WMI</category></item><item><title>IIS7 - post #8</title><link>http://weblogs.asp.net/steveschofield/archive/2006/09/09/IIS7-_2D00_-post-_2300_8.aspx</link><pubDate>Sun, 10 Sep 2006 03:16:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:533070</guid><dc:creator>steve schofield</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/steveschofield/rsscomments.aspx?PostID=533070</wfw:commentRss><comments>http://weblogs.asp.net/steveschofield/archive/2006/09/09/IIS7-_2D00_-post-_2300_8.aspx#comments</comments><description>Here is sample code to return a collection of Application Pools using WMI and IIS7.&amp;nbsp; This is dynamic because this could be used to retrieve from a local machine or altering the code to connect to a remote server&amp;nbsp;running IIS7.&amp;nbsp; Here is an article that explains what IIS7 features are on various versions of Vista.&amp;nbsp; This is bound to confuse! :)&amp;nbsp; &lt;a href="http://www.iis.net/1100/SinglePageArticle.ashx"&gt;http://www.iis.net/1100/SinglePageArticle.ashx&lt;/a&gt;
&lt;p&gt;&lt;u&gt;&amp;#39;Using System.Management to retrieve WMI / IIS7 info.&lt;br /&gt;
&lt;/u&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;Define the WMI connection information&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; options &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;New&lt;/font&gt;&lt;font size="2"&gt; System.Management.ConnectionOptions()&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;options.Username = strUID&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;options.Password = strPWD&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;Define the Scope information / Note the path defined.&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; scope &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Management.ManagementScope&lt;br /&gt;
scope = &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;New&lt;/font&gt;&lt;font size="2"&gt; System.Management.ManagementScope(&lt;/font&gt;&lt;font size="2" color="#800000"&gt;&lt;a href="file:////root/WebAdministration"&gt;\\.\root\WebAdministration&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;Define Query and Searcher objects&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; WMIQuery &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;New&lt;/font&gt;&lt;font size="2"&gt; System.Management.SelectQuery(&lt;/font&gt;&lt;font size="2" color="#800000"&gt;&amp;quot;SELECT * FROM ApplicationPool&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; searcher &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;New&lt;/font&gt;&lt;font size="2"&gt; System.Management.ManagementObjectSearcher(scope, WMIQuery)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;Connect to WMI&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Try&lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;scope.Connect()&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Catch&lt;/font&gt;&lt;font size="2"&gt; ex &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Exception&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Sub&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Try&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;Dim variables for information that will be returned&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; AppPoolName &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Management.ManagementObject&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; col &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Management.ManagementObjectCollection&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;Return the collection&lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;col = searcher.Get()&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#008000"&gt;&amp;#39;Write the list of Application Pools to webpage&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;For&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Each&lt;/font&gt;&lt;font size="2"&gt; AppPoolName &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;In&lt;/font&gt;&lt;font size="2"&gt; col&lt;br /&gt;
&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;Response.Write(AppPoolName.GetPropertyValue(&lt;/font&gt;&lt;font size="2" color="#800000"&gt;&amp;quot;Name&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).ToString() &amp;amp; &lt;/font&gt;&lt;font size="2" color="#800000"&gt;&amp;quot;&amp;lt;BR&amp;gt;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Next&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Here is the IIS7&amp;#39;ish way of using the Microsoft.Web.Administration&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; Server &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;New&lt;/font&gt;&lt;font size="2"&gt; Microsoft.Web.Administration.ServerManager&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; col &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt; ApplicationPoolCollection 
&lt;p&gt;col = Server.ApplicationPools&lt;/p&gt;
Dim&lt;/font&gt;&lt;font size="2"&gt; AppPoolName &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;String&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font size="2" color="#800000"&gt;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; x &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Integer = 0&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font size="2" color="#0000ff"&gt;For&lt;/font&gt;&lt;font size="2"&gt; x = 0 &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;To&lt;/font&gt;&lt;font size="2"&gt; col.Count - 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; AppPoolName = col(x).Name&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Next &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;strong&gt;&lt;u&gt;&lt;br /&gt;
&amp;#39;Return a list of Sites&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; Server &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;New&lt;/font&gt;&lt;font size="2"&gt; Microsoft.Web.Administration.ServerManager&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; col &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; SiteCollection 
&lt;p&gt;col = Server.Sites&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; SiteName &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;String&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font size="2" color="#800000"&gt;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; x &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Integer = 0&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;
&lt;font size="2" color="#0000ff"&gt;For&lt;/font&gt;&lt;font size="2"&gt; x = 0 &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;To&lt;/font&gt;&lt;font size="2"&gt; col.Count - 1&lt;br /&gt;
&amp;nbsp;SiteName = col(x).Name&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Next&lt;/font&gt;
&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=533070" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/steveschofield/archive/tags/IIS/default.aspx">IIS</category><category domain="http://weblogs.asp.net/steveschofield/archive/tags/WMI/default.aspx">WMI</category></item><item><title>WMI - start a process on remote machine and passing custom credentials.</title><link>http://weblogs.asp.net/steveschofield/archive/2006/06/06/WMI---start-a-process-on-remote-machine-passing-credentials_2E00_.aspx</link><pubDate>Tue, 06 Jun 2006 04:41:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:450839</guid><dc:creator>steve schofield</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/steveschofield/rsscomments.aspx?PostID=450839</wfw:commentRss><comments>http://weblogs.asp.net/steveschofield/archive/2006/06/06/WMI---start-a-process-on-remote-machine-passing-credentials_2E00_.aspx#comments</comments><description>&lt;P&gt;I use &lt;A href="http://msdn2.microsoft.com/en-us/library/2wkebaxa.aspx"&gt;System.Management&lt;/A&gt; in .NET 2.0 to connect, pass custom credentials to a remote machine and query with WMI frequently.&amp;nbsp;&amp;nbsp; This is straight forward and there are many examples showing the syntax how to do this.&amp;nbsp;&amp;nbsp; However, while&amp;nbsp;working with remote IIS7 installs,&amp;nbsp;&amp;nbsp;I wanted to execute a command&amp;nbsp;on a remote machine while passing custom credentials.&amp;nbsp; I couldn't find an example that provided this functionality,&amp;nbsp;hopefully this will&amp;nbsp;save someone time searching for the syntax.&amp;nbsp; This sample starts an instance of 'calc.exe' on a remote machine.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The code&amp;nbsp;accepts&amp;nbsp;four parameters&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Command to run, 
&lt;LI&gt;Machine to connect to, 
&lt;LI&gt;UserName, 
&lt;LI&gt;Password&lt;/LI&gt;&lt;/UL&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Module Module1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; Sub Main()&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim retValue As String&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retValue = RunCommand("calc.exe", "MachineName", "MachineName\UserID", "Password")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(retValue)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp; End Sub&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Function RunCommand(ByVal strCommand As String, ByVal strMachineName As String, ByVal strUserName As String, &lt;BR&gt;ByVal strPassword As String) As String&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim options As New System.Management.ConnectionOptions&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Username = strUserName&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.Password = strPassword&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim path As New System.Management.ManagementPath("\\" &amp;amp; strMachineName &amp;amp; "\root\cimv2:Win32_Process")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim scope As New System.Management.ManagementScope(path, options)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scope.Connect()&lt;/P&gt;
&lt;P style="BACKGROUND-COLOR: gray"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim opt As New System.Management.ObjectGetOptions()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim classInstance As New System.Management.ManagementClass(scope, path, opt)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim inParams As System.Management.ManagementBaseObject = classInstance.GetMethodParameters("Create")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inParams("CommandLine") = strCommand&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Execute the method and obtain the return values.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim outParams As System.Management.ManagementBaseObject = classInstance.InvokeMethod("Create", inParams, Nothing)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return "ReturnValue:" &amp;amp; outParams("returnValue") &amp;amp; " Process ID: {0}" &amp;amp; outParams("processId")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; End Function&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;End Module&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Some links I found useful&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/create_method_in_class_win32_process.asp"&gt;Create a Win32 process&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/system.management.invokemethodoptions.aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.management.invokemethodoptions.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/dwd0y33x(vs.80,d=printer).aspx"&gt;http://msdn2.microsoft.com/en-us/library/dwd0y33x(vs.80,d=printer).aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Return code s&lt;BR&gt;Description (these are the codes returned once a process has executed)&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;0 Successful completion &lt;BR&gt;2 Access denied &lt;BR&gt;3 Insufficient privilege &lt;BR&gt;8 Unknown failure &lt;BR&gt;9 Path not found &lt;BR&gt;21 Invalid parameter &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=450839" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/steveschofield/archive/tags/IIS/default.aspx">IIS</category><category domain="http://weblogs.asp.net/steveschofield/archive/tags/WMI/default.aspx">WMI</category></item></channel></rss>