<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/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>Richard Siddaway's Blog : PowerShell and WMI</title><link>http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx</link><description>Tags: PowerShell and WMI</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>WMI migration</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/12/14/wmi-migration.aspx</link><pubDate>Mon, 14 Dec 2009 18:16:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1745574</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1745574</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/12/14/wmi-migration.aspx#comments</comments><description>&lt;p&gt;In case you were wondering why the WMI based posts seem to have dried up – I have opened a new blog&lt;/p&gt;  &lt;p&gt;&lt;a title="http://itknowledgeexchange.techtarget.com/powershell/" href="http://itknowledgeexchange.techtarget.com/powershell/"&gt;http://itknowledgeexchange.techtarget.com/powershell/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Just for PowerShell and WMI. &lt;/p&gt;  &lt;p&gt;I figure there is enough subject matter in the topic to support a separate site.&lt;/p&gt;  &lt;p&gt;I will be covering the rest of the PowerShell world from here.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:958fb36b-dec9-4cb4-8c49-2cdeab1cb1a1" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1745574" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>WMICookbook: Read Routing Table</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/20/wmicookbook-read-routing-table.aspx</link><pubDate>Fri, 20 Nov 2009 16:59:33 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1741035</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1741035</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/20/wmicookbook-read-routing-table.aspx#comments</comments><description>&lt;p&gt;When we need to troubleshoot networking problems we will sometimes need to read the routing table on a machine. The routing table contains the information on the routes known to the network interfaces. This can be created automatically or manually . On the local machine we can use the route command to find this information – but how do we find it on a remote machine. WMI has a class that enables us to read the routing table. &lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:638px;padding-right:5px;font-family:consolas,lucida console;height:1136px;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;010               &lt;br /&gt;011               &lt;br /&gt;012               &lt;br /&gt;013               &lt;br /&gt;014               &lt;br /&gt;015               &lt;br /&gt;016               &lt;br /&gt;017               &lt;br /&gt;018               &lt;br /&gt;019               &lt;br /&gt;020               &lt;br /&gt;021               &lt;br /&gt;022               &lt;br /&gt;023               &lt;br /&gt;024               &lt;br /&gt;025               &lt;br /&gt;026               &lt;br /&gt;027               &lt;br /&gt;028               &lt;br /&gt;029               &lt;br /&gt;030               &lt;br /&gt;031               &lt;br /&gt;032               &lt;br /&gt;033               &lt;br /&gt;034               &lt;br /&gt;035               &lt;br /&gt;036               &lt;br /&gt;037               &lt;br /&gt;038               &lt;br /&gt;039               &lt;br /&gt;040               &lt;br /&gt;041               &lt;br /&gt;042               &lt;br /&gt;043               &lt;br /&gt;044               &lt;br /&gt;045               &lt;br /&gt;046               &lt;br /&gt;047               &lt;br /&gt;048               &lt;br /&gt;049               &lt;br /&gt;050               &lt;br /&gt;051               &lt;br /&gt;052               &lt;br /&gt;053               &lt;br /&gt;054               &lt;br /&gt;055               &lt;br /&gt;056               &lt;br /&gt;057               &lt;br /&gt;058               &lt;br /&gt;059               &lt;br /&gt;060               &lt;br /&gt;061               &lt;br /&gt;062               &lt;br /&gt;063               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Get-RouteTable&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#add8e6;"&gt;parameter&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;ValueFromPipeline&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#006400;"&gt;## create class for object&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$source&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;@&amp;quot;                &lt;br /&gt;public class WmiIPRoute                 &lt;br /&gt;{                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private string _destination;                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private string _mask;                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private string _nexthop;                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private string _interface;                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private int _metric;                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string Destination {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get {return _destination;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set {_destination = value;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public string Mask {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get {return _mask;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set {_mask = value;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public string NextHop {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get {return _nexthop;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set {_nexthop = value;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public string Interface {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get {return _interface;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set {_interface = value;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public int Metric {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get {return _metric;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set {_metric = value;}                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;}                 &lt;br /&gt;&amp;quot;@&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Add-Type&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-TypeDefinition&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$source&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;@(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Class&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Win32_IP4RouteTable&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;New-Object&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-TypeName&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;WmiIPRoute&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Destination&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Destination&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Mask&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Mask&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;NextHop&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;NextHop&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Metric&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Metric1&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$filt&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;InterfaceIndex=&amp;#39;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;InterfaceIndex&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;&amp;#39;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$ip&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Class&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Win32_NetworkAdapterConfiguration&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$filt&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;IPAddress&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;InterfaceIndex&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Interface&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;127.0.0.1&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;elseif&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$ip&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;length&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;2&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Interface&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$ip&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Interface&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$ip&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$route&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Format-Table&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-AutoSize&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Our function takes a single parameter – a computer name (or IP address) I’ve used the advanced function parameters to this function operates on the pipeline.&amp;#160; We then create a .NET class to hold our data – we will be accessing a couple of WMI classes so we’ll make the presentation neat.&amp;#160; The class is added using Add-Type.&lt;/p&gt;  &lt;p&gt;As an aside I really like this technique for collecting data together into a single object.&amp;#160; Its neater and easier to use than Add-Member.&lt;/p&gt;  &lt;p&gt;We can then use Get-WmiObject -Class Win32_IP4RouteTable -ComputerName $computer to retrieve the routing information. We create an instance of our object and populate the properties.&amp;#160; One thing we need to know is the Interface ie which address on our machine is using this route,&amp;#160; We can find this from the Win32_NetworkAdapterConfiguration&amp;#160; class.&amp;#160; There isn’t an association but we can find the address by using the InterfaceIndex as a filter – its the same value in both classes.&amp;#160; if the InterfaceIndex = 1 its the Loopback Adapter on 127.0.0.1&lt;/p&gt;  &lt;p&gt;We can then add our route to the data. When all the routes are collected we can display the data.&amp;#160; The data could be output onto the pipeline but at the moment I can’t think what else to do with it so we’ll leave it like this for now.&lt;/p&gt;  &lt;p&gt;Note: Win32_IP4RouteTable is only available on Windows 2003 and later&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ee88c3e3-93b5-4304-9eca-33ced95d7869" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Networking" rel="tag"&gt;Networking&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Routing+Table" rel="tag"&gt;Routing Table&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1741035" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>WMI CookBook: WMI Presentation</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/17/wmi-cookbook-wmi-presentation.aspx</link><pubDate>Tue, 17 Nov 2009 19:13:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1740301</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1740301</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/17/wmi-cookbook-wmi-presentation.aspx#comments</comments><description>&lt;p&gt;As with other PowerShell objects there is a default format for the display of WMI objetcs. If we look at the NetworkAdapter class&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-WmiObject -Class Win32_NetworkAdapter -Filter &amp;quot;DeviceId=&amp;#39;11&amp;#39;&amp;quot; &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;ServiceName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : athr      &lt;br /&gt;MACAddress&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 00:00:00:00:00:00       &lt;br /&gt;AdapterType&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Ethernet 802.3       &lt;br /&gt;DeviceID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 11       &lt;br /&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Atheros AR5007 802.11b/g WiFi Adapter       &lt;br /&gt;NetworkAddresses :       &lt;br /&gt;Speed&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 54000000&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;You didn’t think I’d really give you my MAC address did you?&lt;/p&gt;  &lt;p&gt;If we want to see all of the properties we can do this&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_NetworkAdapter -Filter &amp;quot;DeviceId=&amp;#39;11&amp;#39;&amp;quot; | select -Property * &lt;/p&gt;  &lt;p&gt;but we get a few ugly looking entries&lt;/p&gt;  &lt;p&gt;__GENUS    &lt;br /&gt;__CLASS     &lt;br /&gt;__SUPERCLASS     &lt;br /&gt;__DYNASTY     &lt;br /&gt;__RELPATH     &lt;br /&gt;__PROPERTY_COUNT     &lt;br /&gt;__DERIVATION     &lt;br /&gt;__SERVER     &lt;br /&gt;__NAMESPACE     &lt;br /&gt;__PATH &lt;/p&gt;  &lt;p&gt;that we may not actually want or need.&lt;/p&gt;  &lt;p&gt;We can easily filter them out if desired&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_NetworkAdapter -Filter &amp;quot;DeviceId=&amp;#39;11&amp;#39;&amp;quot; | select -Property * -ExcludeProperty &amp;quot;__*&amp;quot;&lt;/p&gt;  &lt;p&gt;The ExcludeProperty takes a wild card to identify the properties with two underscore characters at the front.&lt;/p&gt;  &lt;p&gt;Simple but effective.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:74983a93-fd78-4432-9e57-324967052b31" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Property+Selection" rel="tag"&gt;Property Selection&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1740301" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Powershell/default.aspx">Powershell</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>WMI CookBook: Associators Pt I</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/16/wmi-cookbook-associators-pt-i.aspx</link><pubDate>Mon, 16 Nov 2009 21:03:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1740062</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1740062</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/16/wmi-cookbook-associators-pt-i.aspx#comments</comments><description>&lt;p&gt;WMI is a wonderful thing and like many people I have a love-hate relationship with it. It is incredibly powerful, and can take you deep into the system, but it is not easy to find your way.&lt;/p&gt;  &lt;p&gt;I have decided to spend some time digging into WMI and will document the findings in a (long) series of blog posts. I also intend to pull the information together into a document that will be available for download.&amp;#160; The scripts will end up in PowerShell modules that will also be available for download.&lt;/p&gt;  &lt;p&gt;I am doing this with PowerShell v2 on Windows 7. Where necessary, and wherever possible, I will give alternatives that can be used with PowerShell v1.&lt;/p&gt;  &lt;p&gt;The main trick with WMI is finding out the class or classes we need to actually use. The standard PowerShell way of searching for classes is to use the –List parameter.&amp;#160; Network Adapters are common items we need to deal with so we’ll see what WMI can tell us.&amp;#160; First, what WMI classes deal with Network Adapters. One thing we can do with –List is give a partial class name and a wildcard to restrict the results (otherwise we get lots, and lots of classes returned).&amp;#160; To begin with I’m only interested in the name of the class. I’m working in the default name space so don’t need to mention it.&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-WmiObject -List &amp;quot;Win32_NetworkAdapter*&amp;quot; | Select Name&lt;/p&gt;  &lt;p&gt;Name    &lt;br /&gt;----     &lt;br /&gt;Win32_NetworkAdapter     &lt;br /&gt;Win32_NetworkAdapterConfiguration     &lt;br /&gt;Win32_NetworkAdapterSetting &lt;/p&gt;  &lt;p&gt;We could now go off to MSDN and check what these classes do but we can find that information directly.&amp;#160; As Jeffrey showed recently &lt;a title="http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx" href="http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx"&gt;http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx&lt;/a&gt; we can use the –Amended parameter to show the description property.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:772px;padding-right:5px;font-family:consolas,lucida console;height:71px;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-List&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Win32_NetworkAdapter*&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-List&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Name&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color:#000080;"&gt;-Amended&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Qualifiers&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Name&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Value&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This gives use this information for the three classes.&lt;/p&gt;  &lt;p&gt;The Win32_NetworkAdapter class represents a network adapter on a Win32 system.    &lt;br /&gt;The Win32_NetworkAdapterConfiguration class represents the attributes and behaviors of a network adapter. This class has been extended to include extra properties and methods that support the management of the TCP/IPprotocols (and are independent of the network adapter).     &lt;br /&gt;The Win32_NetworkAdapterSetting class represents an association between a network adapter and its configuration settings. &lt;/p&gt;  &lt;p&gt;If we look at Win32_NetworkAdapterSetting&lt;/p&gt;  &lt;p&gt;Get-WmiObject Win32_NetworkAdapterSetting&lt;/p&gt;  &lt;p&gt;we will see an entry for each adapter that links the adapter with its configuration. This information is paired like this:&lt;/p&gt;  &lt;p&gt;Element&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : \\RSLAPTOP01\root\cimv2:Win32_NetworkAdapter.DeviceID=&amp;quot;11&amp;quot;    &lt;br /&gt;Setting&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : &lt;a&gt;\\RSLAPTOP01\root\cimv2:Win32_NetworkAdapterConfiguration.Index=11&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If we look at the adapter and its configuration &lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_NetworkAdapter -Filter &amp;quot;DeviceID=&amp;#39;11&amp;#39;&amp;quot;&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter &amp;quot;Index=&amp;#39;11&amp;#39;&amp;quot;&lt;/p&gt;  &lt;p&gt;we can see the individual information.&amp;#160; Going through the Win32_NetworkAdapterSetting class is tedious but now we now that the adapter’s DeviceId is linked to the Configurations Index we can use this ASSOCIATION via a bit of WQL.&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Query &amp;quot;ASSOCIATORS OF {Win32_NetworkAdapter.DeviceID=&amp;#39;11&amp;#39;} WHERE ResultClass=Win32_NetworkAdapterConfiguration&amp;quot; &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;DHCPEnabled&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : True      &lt;br /&gt;IPAddress&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : {192.168.196.138, fe80::6d95:b824:6a72:a0a9}       &lt;br /&gt;DefaultIPGateway : {192.168.196.1}       &lt;br /&gt;DNSDomain&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :       &lt;br /&gt;ServiceName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : athr       &lt;br /&gt;Description&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Atheros AR5007 802.11b/g WiFi Adapter       &lt;br /&gt;Index&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 11&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The other thing to think about is what other associations exist.&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-WmiObject -Query &amp;quot;ASSOCIATORS OF {Win32_NetworkAdapter.DeviceID=&amp;#39;11&amp;#39;} &amp;quot; | Select __CLASS -Unique &lt;/p&gt;  &lt;p&gt;__CLASS    &lt;br /&gt;-------     &lt;br /&gt;Win32_PnPEntity     &lt;br /&gt;Win32_ComputerSystem     &lt;br /&gt;Win32_NetworkAdapterConfiguration     &lt;br /&gt;Win32_IRQResource     &lt;br /&gt;Win32_DeviceMemoryAddress     &lt;br /&gt;Win32_NetworkProtocol     &lt;br /&gt;Win32_SystemDriver&lt;/p&gt;  &lt;p&gt;So we have a set of classes that are all associated through the network adpater device id.&amp;#160;&amp;#160; In the next few posts we will dig into this web and see what we can discover and how we can use these associations to help us understand our system.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5c2020e5-9a89-45c2-bd93-f45d58e59d87" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Network" rel="tag"&gt;Network&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1740062" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>PowerShell WMI events</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-wmi-events.aspx</link><pubDate>Sat, 07 Nov 2009 21:29:51 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1738276</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1738276</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-wmi-events.aspx#comments</comments><description>&lt;p&gt;In my previous post ( &lt;a title="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry" href="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry"&gt;http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry&lt;/a&gt;&amp;#160; or &lt;a title="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry" href="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry"&gt;http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry&lt;/a&gt; ) I started to look at WMI events in PowerShell v2.&amp;#160; The win32_process class was used but all that showed us was that a process had started. We need a bit more information.&amp;#160; A bit of digging brought up the Win32_ProcessStartTrace class that seems to do what we want.&amp;#160; &lt;/p&gt;  &lt;p&gt;Register-WMIEvent allows us to specify the class we want to use rather than a query – however if we try that we don’t get anything returned&amp;#160; - oops. &lt;/p&gt;  &lt;p&gt;Looking through the help for Register-WMIEvent shows that we have the possibility of performing an action when the event occurs.&amp;#160; The action scriptblock can use a number of variables including $Event, $EventSubscriber, $Sender, $SourceEventArgs, and $SourceArgs automatic variables.&amp;#160; Wanting to understand these variables I tried dumping it though get-member.&amp;#160; &lt;/p&gt;  &lt;p&gt;PS&amp;gt; Register-WmiEvent -Query &amp;quot;Select * FROM Win32_ProcessStartTrace&amp;quot; -Action {$Event | gm} &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c1016218-f80... NotStarted False&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event | gm&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The subscription runs as a PowerShell job. Using the opening of Notepad to trigger the event we can see that data is returned.&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Job &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c1016218-f80... Running&amp;#160;&amp;#160;&amp;#160; True&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event | gm &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;And see that we have a few properties to play with.&amp;#160; ComputerName may come in useful if we are dealing with remote machines.&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Receive-Job -Id 2 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; TypeName: System.Management.Automation.PSEventArgs &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MemberType Definition      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------- ----------       &lt;br /&gt;Equals&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; bool Equals(System.Object obj)       &lt;br /&gt;GetHashCode&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; int GetHashCode()       &lt;br /&gt;GetType&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; type GetType()       &lt;br /&gt;ToString&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; string ToString()       &lt;br /&gt;ComputerName&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String ComputerName {get;}       &lt;br /&gt;EventIdentifier&amp;#160; Property&amp;#160;&amp;#160; System.Int32 EventIdentifier {get;}       &lt;br /&gt;MessageData&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Management.Automation.PSObject MessageData {get;}       &lt;br /&gt;RunspaceId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Guid RunspaceId {get;}       &lt;br /&gt;Sender&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Object Sender {get;}       &lt;br /&gt;SourceArgs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Object[] SourceArgs {get;}       &lt;br /&gt;SourceEventArgs&amp;#160; Property&amp;#160;&amp;#160; System.EventArgs SourceEventArgs {get;}       &lt;br /&gt;SourceIdentifier Property&amp;#160;&amp;#160; System.String SourceIdentifier {get;}       &lt;br /&gt;TimeGenerated&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.DateTime TimeGenerated {get;}       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;The properties look similar to those we saw in the last post.&amp;#160; Lets dig into SourceEventArgs&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Register-WmiEvent -Query &amp;quot;Select * FROM Win32_ProcessStartTrace&amp;quot; -Action {$Event.SourceEventArgs | gm} &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8d4246a5-5f8... NotStarted False&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event.SourceEventArgs... &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Job &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8d4246a5-5f8... Running&amp;#160;&amp;#160;&amp;#160; True&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event.SourceEventArgs... &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Receive-Job -Id 3 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; TypeName: System.Management.EventArrivedEventArgs &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MemberType Definition      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------- ----------       &lt;br /&gt;Equals&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; bool Equals(System.Object obj)       &lt;br /&gt;GetHashCode Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; int GetHashCode()       &lt;br /&gt;GetType&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; type GetType()       &lt;br /&gt;ToString&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; string ToString()       &lt;br /&gt;Context&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Object Context {get;}       &lt;br /&gt;NewEvent&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Management.ManagementBaseObject NewEvent {get;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Only thing here that look interesting is NewEvent&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Register-WmiEvent -Query &amp;quot;Select * FROM Win32_ProcessStartTrace&amp;quot; -Action {$Event.SourceEventArgs.NewEvent | gm} &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0857a744-1d3... NotStarted False&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event.SourceEventArgs... &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Receive-Job -Id 4 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; TypeName: System.Management.ManagementBaseObject#\Win32_ProcessStartTrace &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MemberType Definition      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------- ----------       &lt;br /&gt;ParentProcessID&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt32 ParentProcessID {get;set;}       &lt;br /&gt;ProcessID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt32 ProcessID {get;set;}       &lt;br /&gt;ProcessName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String ProcessName {get;set;}       &lt;br /&gt;SECURITY_DESCRIPTOR Property&amp;#160;&amp;#160; System.Byte[] SECURITY_DESCRIPTOR {get;set;}       &lt;br /&gt;SessionID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt32 SessionID {get;set;}       &lt;br /&gt;Sid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Byte[] Sid {get;set;}       &lt;br /&gt;TIME_CREATED&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt64 TIME_CREATED {get;set;}       &lt;br /&gt;__CLASS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __CLASS {get;set;}       &lt;br /&gt;__DERIVATION&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String[] __DERIVATION {get;set;}       &lt;br /&gt;__DYNASTY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __DYNASTY {get;set;}       &lt;br /&gt;__GENUS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Int32 __GENUS {get;set;}       &lt;br /&gt;__NAMESPACE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __NAMESPACE {get;set;}       &lt;br /&gt;__PATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __PATH {get;set;}       &lt;br /&gt;__PROPERTY_COUNT&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Int32 __PROPERTY_COUNT {get;set;}       &lt;br /&gt;__RELPATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __RELPATH {get;set;}       &lt;br /&gt;__SERVER&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __SERVER {get;set;}       &lt;br /&gt;__SUPERCLASS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __SUPERCLASS {get;set;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now we have got to the information we need.&amp;#160; So how can we use this.&amp;#160; Up to now we have just allowed the job to run and then picked the data from the job.&amp;#160; One option is to write the data to the prompt as shown in this example&amp;#160; &lt;a title="http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx" href="http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx"&gt;http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx&lt;/a&gt;.&amp;#160; A lot of this digging was because I didn’t understand how this was put together.&amp;#160; PowerShell really is the best way to discover how to use PowerShell!!&lt;/p&gt;  &lt;p&gt;This gets us to this script which is modified from the PowerShell Team blog&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;010               &lt;br /&gt;011               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#006400;"&gt;## query&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$q&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Select * from Win32_ProcessStartTrace&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#006400;"&gt;## action script block&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$a&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$eSEANE&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SourceEventArgs&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;NewEvent&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;#39;Computer {0},ID {1}, Name &amp;quot;{2}&amp;quot;, Time {3}, Source {4}&amp;#39;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-f&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sender&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Scope&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Path&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Server&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$eSEANE&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;ProcessId&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;`               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$eSEANE&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;ProcessName&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;TimeGenerated&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SourceIdentifier&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Register-WmiEvent&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Query&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$q&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-SourceIdentifier&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Process Start&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Action&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$a&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Turns out the ComputerName parameter doesn’t work but a comment on the blog shows how Jeffrey Hicks solved the problem.&lt;/p&gt;  &lt;p&gt;What we get now is a listing at our PowerShell prompt&amp;#160; when a new process starts. We can keep working and the data comes through when the prompt is idle.&lt;/p&gt;  &lt;p&gt;Next we will look at closing a process and recording the data in a log&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0308d51f-7878-4d76-baf1-7cbb5c9ffcaa" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Events" rel="tag"&gt;Events&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1738276" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>PowerShell Eventing</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-eventing.aspx</link><pubDate>Sat, 07 Nov 2009 14:41:38 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1738208</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1738208</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-eventing.aspx#comments</comments><description>&lt;p&gt;This isn’t the latest sport added for the 2012 Olympics but a way to dig deeper into what is happening on your machine.&amp;#160; There is a continuous stream of events occurring on a computer – programs stop or start, files open or close etc etc.&amp;#160; Some, but all, of these events are recorded in the event logs. If we want to understand what is happening we can track this using the PowerShell Event engine that is introduced in PowerShell v2.&lt;/p&gt;  &lt;p&gt;Three types of events can be registered – PowerShell engine, .NET and WMI using the following cmdlets respectively&lt;/p&gt; Register-EngineEvent   &lt;br /&gt;Register-ObjectEvent   &lt;br /&gt;Register-WmiEvent   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We can use the following cmdlets to discover the events that actually happen.&lt;/p&gt;  &lt;p&gt;Get-Event    &lt;br /&gt;Get-EventSubscriber     &lt;br /&gt;New-Event     &lt;br /&gt;Remove-Event     &lt;br /&gt;Unregister-Event     &lt;br /&gt;Wait-Event &lt;/p&gt;  &lt;p&gt;We’ll start by looking at WMI events. We can use Register-WmiEvent to register the event we want to track. In this case we want to know when new processes are started. We can create an event registration using&lt;/p&gt;  &lt;p align="left"&gt;Register-WmiEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -Query &amp;quot;Select * from __instancecreationevent within 5 where targetinstance isa &amp;#39;Win32_Process&amp;#39;&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -MessageData &amp;quot;Process Started&amp;quot; -SourceIdentifier &amp;quot;New Process&amp;quot; &lt;/p&gt;  &lt;p&gt;__instancecreationevent&amp;#160; is a WMI System Class.&amp;#160; 5 refewrs to the system being scanned every 5 seconds&lt;/p&gt;  &lt;p&gt;WMI System classes are created on a per WMI namespace basis i.e. a new set of system classes is created for each WMI namespace. The full list of WMI system classes can be seen at &lt;a href="http://msdn.microsoft.com/en-us/library/aa394583(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa394583(VS.85).aspx&lt;/a&gt; or can be browsed using PowerGUI&amp;#39;s WMI browser. &lt;/p&gt;  &lt;p&gt;We can view the system classes relating to WMI events. &lt;/p&gt;  &lt;p&gt;Get-WmiObject -Namespace &amp;#39;root\cimv2&amp;#39; -List &amp;quot;__*Event&amp;quot;&lt;/p&gt;  &lt;p&gt;and we will see that there is a __InstanceDeletionEvent class as well.&amp;#160; if we want to track process creation and deletion (program open and close) we will need to register this as well.&lt;/p&gt;  &lt;p align="left"&gt;Register-WmiEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -Query &amp;quot;Select * from __instancedeletionevent within 5 where targetinstance isa &amp;#39;Win32_Process&amp;#39;&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -MessageData &amp;quot;Process Stopped&amp;quot; -SourceIdentifier &amp;quot;End Process&amp;quot;&lt;/p&gt;  &lt;p align="left"&gt;When we run these commands nothing seems to happen. We can see the event registrations (or subscriptions)&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-EventSubscriber &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;SubscriptionId&amp;#160;&amp;#160; : 1      &lt;br /&gt;SourceObject&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;EventName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : EventArrived       &lt;br /&gt;SourceIdentifier : New Process       &lt;br /&gt;Action&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :       &lt;br /&gt;HandlerDelegate&amp;#160; :       &lt;br /&gt;SupportEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False       &lt;br /&gt;ForwardEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;SubscriptionId&amp;#160;&amp;#160; : 2      &lt;br /&gt;SourceObject&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;EventName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : EventArrived       &lt;br /&gt;SourceIdentifier : End Process       &lt;br /&gt;Action&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :       &lt;br /&gt;HandlerDelegate&amp;#160; :       &lt;br /&gt;SupportEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False       &lt;br /&gt;ForwardEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False&lt;/font&gt;&lt;/p&gt;  &lt;p align="left"&gt;If we start notepad and and then check the process&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Process notepad | select name, starttime &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StartTime      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------       &lt;br /&gt;notepad&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 07/11/2009 14:20:19&lt;/font&gt;&lt;/p&gt;  &lt;p align="left"&gt;we can compare this to the event information&lt;/p&gt;  &lt;p align="left"&gt;PS&amp;gt; Get-Event -SourceIdentifier &amp;quot;New Process&amp;quot;&lt;/p&gt;  &lt;p align="left"&gt;&lt;font face="Courier New"&gt;ComputerName&amp;#160;&amp;#160;&amp;#160;&amp;#160; :      &lt;br /&gt;RunspaceId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 2a581963-55cd-4e46-82ab-ddb6a38fa9a2       &lt;br /&gt;EventIdentifier&amp;#160; : 27       &lt;br /&gt;Sender&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;SourceEventArgs&amp;#160; : System.Management.EventArrivedEventArgs       &lt;br /&gt;SourceArgs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}       &lt;br /&gt;SourceIdentifier : New Process       &lt;br /&gt;TimeGenerated&amp;#160;&amp;#160;&amp;#160; : 07/11/2009 14:20:23       &lt;br /&gt;MessageData&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Process Started&lt;/font&gt;&lt;/p&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Which doesn’t seem to tell is much beyond the fact that a process has started – it specifically doesn’t tell us which process has started. &lt;/p&gt;  &lt;p&gt;Similarly when we stop a process&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Stop-Process -Name notepad    &lt;br /&gt;PS&amp;gt; Get-Event -SourceIdentifier &amp;quot;End Process&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;ComputerName&amp;#160;&amp;#160;&amp;#160;&amp;#160; :      &lt;br /&gt;RunspaceId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 2a581963-55cd-4e46-82ab-ddb6a38fa9a2       &lt;br /&gt;EventIdentifier&amp;#160; : 29       &lt;br /&gt;Sender&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;SourceEventArgs&amp;#160; : System.Management.EventArrivedEventArgs       &lt;br /&gt;SourceArgs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}       &lt;br /&gt;SourceIdentifier : End Process       &lt;br /&gt;TimeGenerated&amp;#160;&amp;#160;&amp;#160; : 07/11/2009 14:27:47       &lt;br /&gt;MessageData&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Process Stopped&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;We get a message that the process has stopped but no identification as to which process.&lt;/p&gt;  &lt;p&gt;Events only exist in the current session and the subscriptions are lost if the PowerShell session is closed.&lt;/p&gt;  &lt;p&gt;Couple of quick points&lt;/p&gt;  &lt;p&gt;The event queue can be quickly cleaned using&lt;/p&gt;  &lt;p&gt;Get-Event | Remove-Event.&lt;/p&gt;  &lt;p&gt;We can remove event subscriptions using&lt;/p&gt;  &lt;p&gt;Unregister-Event -SourceIdentifier &amp;quot;New Process&amp;quot;    &lt;br /&gt;Unregister-Event -SourceIdentifier &amp;quot;End Process&amp;quot;&lt;/p&gt;  &lt;p&gt;We will dig further into the eventing capabilities in future posts&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eef89573-51ab-45b8-b962-6e797450bc16" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Events" rel="tag"&gt;Events&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1738208" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>System Up Time</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/08/13/system-up-time.aspx</link><pubDate>Wed, 12 Aug 2009 23:11:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1715193</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1715193</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/08/13/system-up-time.aspx#comments</comments><description>&lt;p&gt;The PowerShell team have just posted about obtaining system up time using a .NET class to convert the WMI date format to something thats readable&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/powershell/archive/2009/08/12/get-systemuptime-and-working-with-the-wmi-date-format.aspx" href="http://blogs.msdn.com/powershell/archive/2009/08/12/get-systemuptime-and-working-with-the-wmi-date-format.aspx"&gt;http://blogs.msdn.com/powershell/archive/2009/08/12/get-systemuptime-and-working-with-the-wmi-date-format.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is a WMI only way of doing this&lt;/p&gt;  &lt;p&gt;$os = Get-WmiObject -Class Win32_OperatingSystem    &lt;br /&gt;$os.ConvertToDateTime($os.LastBootUpTime)&lt;/p&gt;  &lt;p&gt;But this gives the date and time the system was last booted.&amp;#160; If you want the actual up time then use&lt;/p&gt;  &lt;p&gt;(get-date) - $os.ConvertToDateTime($os.LastBootUpTime)&lt;/p&gt;  &lt;p&gt;which generates a timespan object&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;Days&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0      &lt;br /&gt;Hours&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 1       &lt;br /&gt;Minutes&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 53       &lt;br /&gt;Seconds&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 8       &lt;br /&gt;Milliseconds&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 461       &lt;br /&gt;Ticks&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 67884618000       &lt;br /&gt;TotalDays&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 0.0785701597222222       &lt;br /&gt;TotalHours&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 1.88568383333333       &lt;br /&gt;TotalMinutes&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 113.14103       &lt;br /&gt;TotalSeconds&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 6788.4618       &lt;br /&gt;TotalMilliseconds : 6788461.8&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;which gives the actual up time.&amp;#160; The .NET method can be substituted for the WMI method if required&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f6acb2f5-a51b-4b2a-a21a-a99de41b2920" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/UpTime" rel="tag"&gt;UpTime&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1715193" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>Creating a process</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/04/28/creating-a-process.aspx</link><pubDate>Tue, 28 Apr 2009 21:03:25 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1691494</guid><dc:creator>Richard's space</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1691494</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/04/28/creating-a-process.aspx#comments</comments><description>I&amp;#39;ve looked at creating a process before - using [WMIClass]. With CTP3 we have a few more options Start-Process -Filepath notepad.exe Invoke-WMIMethod -Class Win32_process -Name Create -ArgumentList notepad.exe Set-WMIinstance -Class Win32_process...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2009/04/28/creating-a-process.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1691494" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>WMI Methods and Properties</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/03/17/wmi-methods-and-properties.aspx</link><pubDate>Tue, 17 Mar 2009 17:58:48 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1678775</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1678775</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/03/17/wmi-methods-and-properties.aspx#comments</comments><description>Its odd how we discover things. I need to check the WMI classes for network adapters so used Get-WmiObject -List -Class *network* I intended to check out the data returned so used Get-WmiObject -List -Class win32_networkadapterconfiguration Notice I’ve...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2009/03/17/wmi-methods-and-properties.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1678775" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>Discovering WMI</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/02/19/discovering-wmi.aspx</link><pubDate>Thu, 19 Feb 2009 20:19:29 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1672944</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1672944</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/02/19/discovering-wmi.aspx#comments</comments><description>One thing that seems to come up rather frequently on the newsgroups is what WMI class do I need to use to do X. The really confusing thing about WMI is knowing just what is available. I have done far more with WMI since discovering PowerShell than I ever...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2009/02/19/discovering-wmi.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1672944" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Unique file names</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/16/w2ksg-unique-file-names.aspx</link><pubDate>Thu, 16 Oct 2008 16:46:53 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1651040</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1651040</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/16/w2ksg-unique-file-names.aspx#comments</comments><description>Having seen how to back up our event logs we will need to do this periodically so we need to create unique file names for the backups. The obvious candidate is to base it on the date. Listing 12.7 $date = Get-Date Get-WmiObject -Class Win32_NTEventLogFile...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/16/w2ksg-unique-file-names.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1651040" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Triggered Event Log backups</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/16/w2ksg-triggered-event-log-backups.aspx</link><pubDate>Thu, 16 Oct 2008 16:38:17 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1651041</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1651041</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/16/w2ksg-triggered-event-log-backups.aspx#comments</comments><description>We have seen how to backup and clear the event log. What about checking all of the event logs and doing a backup and clear if they have reached a certain size Listing 12.6 Get-WmiObject -Class Win32_NTEventLogFile | Where {$_.FileSize -gt 10MB} | Foreach...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/16/w2ksg-triggered-event-log-backups.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1651041" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Backup Event Log</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/14/w2ksg-backup-event-log.aspx</link><pubDate>Tue, 14 Oct 2008 19:27:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650824</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1650824</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/14/w2ksg-backup-event-log.aspx#comments</comments><description>We have see how to modify event log properties - lets look at backing them up and clearing out the entries. Preferably in that order. Listing 12.5 $log = Get-WmiObject -Class Win32_NTEventLogFile -Filter &amp;quot;LogFileName = &amp;#39;Application&amp;#39;&amp;quot;...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/14/w2ksg-backup-event-log.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650824" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Log Properties</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/13/w2ksg-log-properties.aspx</link><pubDate>Mon, 13 Oct 2008 19:11:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650730</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1650730</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/13/w2ksg-log-properties.aspx#comments</comments><description>Having seen how to view the log properties lets see how we can change them. One possibility is with WMI. Lets start by viewing the event logs Get-WmiObject -Class Win32_NTEventLogFile one thing to note is that the property with the log file name is LogFileName...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/13/w2ksg-log-properties.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650730" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Page File</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/10/w2ksg-page-file.aspx</link><pubDate>Fri, 10 Oct 2008 07:33:49 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650415</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1650415</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/10/w2ksg-page-file.aspx#comments</comments><description>In theory Listing 10.19 Get-WmiObject -Class Win32_PageFile | Select CreationDate, Description, Drive, FileName, FileSize, InitialSize, InstallDate, MaximumSize,Name, Path should return information about the page file. On my Vista machine it doesn&amp;#39;t...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/10/w2ksg-page-file.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650415" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: File System Type</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/10/w2ksg-file-system-type.aspx</link><pubDate>Fri, 10 Oct 2008 07:14:38 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650411</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1650411</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/10/w2ksg-file-system-type.aspx#comments</comments><description>Skipping forward to Listing 10.16 Get-WmiObject -Class Win32_LogicalDisk | Select DeviceId, FileSystem We can quickly scan the disks for the file system. One interesting point from this is that offline files are given a file system type of CSC-CACHE Share...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/10/w2ksg-file-system-type.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650411" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Free Disk Space</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/09/w2ksg-free-disk-space.aspx</link><pubDate>Thu, 09 Oct 2008 17:56:57 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650361</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1650361</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/09/w2ksg-free-disk-space.aspx#comments</comments><description>Nope - not a 1960&amp;#39;s political slogan. Previously we found out how to discover the logical disk drives on our machines. Having found them we want to know how much free space is available. Listing 10.6 $HardDisk = 3 Get-WmiObject -Class Win32_LogicalDisk...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/09/w2ksg-free-disk-space.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650361" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Logical disks</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/09/w2ksg-logical-disks.aspx</link><pubDate>Thu, 09 Oct 2008 07:46:17 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650267</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1650267</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/09/w2ksg-logical-disks.aspx#comments</comments><description>Physical disks support partitions and logical disks. To discover the logical disks on a machine we would use Listing 10.3 Get-WmiObject -Class Win32_LogicalDisk | Select Compressed,Description, DeviceID, DriveType, FileSystem, FreeSpace, MediaType, Name...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/09/w2ksg-logical-disks.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650267" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Disk Partitions</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/08/w2ksg-disk-partitions.aspx</link><pubDate>Wed, 08 Oct 2008 07:13:28 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650079</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1650079</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/08/w2ksg-disk-partitions.aspx#comments</comments><description>After we have found the physical drives we need to think about the partitions on those drives Script Center Home &amp;gt; Microsoft Windows 2000 Scripting Guide &amp;gt; Scripting Solutions for System Administration &amp;gt; Disks and File Systems &amp;gt; Managing and...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/08/w2ksg-disk-partitions.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650079" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item><item><title>W2KSG: Physical Disk Drive Properties</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/07/w2ksg-physical-disk-drive-properties.aspx</link><pubDate>Tue, 07 Oct 2008 10:28:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1649979</guid><dc:creator>Richard Siddaway's Blog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1649979</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2008/10/07/w2ksg-physical-disk-drive-properties.aspx#comments</comments><description>Lets stick with WMI and jump forward to chapter 10 where we will concentrate on disks and the file system Starting point is physical disks. The WMI class the logically named Win32_DiskDrive. If you want to see all properties use Get-WmiObject Win32_DiskDrive...(&lt;a href="http://msmvps.com/blogs/richardsiddaway/archive/2008/10/07/w2ksg-physical-disk-drive-properties.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1649979" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category></item></channel></rss>