<?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>Search results for 'app:weblogs' matching tag 'Scripting Games'</title><link>http://msmvps.com/search/SearchResults.aspx?q=app:weblogs&amp;tag=Scripting+Games&amp;orTags=0&amp;o=DateDescending</link><description>Search results for 'app:weblogs' matching tag 'Scripting Games'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Scripting Games 2012 comments: #20 multiple ifs</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/17/scripting-games-2012-comments-20-multiple-ifs.aspx</link><pubDate>Thu, 17 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809907</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;An if statement is used to test a condition and if is true do one thing and do another if it is false. It can be written generically as &lt;/p&gt;  &lt;p&gt;if (&amp;lt;condition&amp;gt;){ do stuff}    &lt;br /&gt;else {do other stuff}&lt;/p&gt;  &lt;p&gt;Sometimes we need to test numerous alternatives. We could use multiple if statements, sometimes we have to nest them which can lead to code like this&lt;/p&gt;  &lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Win32_LogicalDisk&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;DriveType=3&amp;quot;&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;if&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-gt&lt;/span&gt; &lt;span style="color:#800080;"&gt;1tb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 1TB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;else&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;             
   &lt;span style="color:#00008b;"&gt;if&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;500gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 500GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
   &lt;span style="color:#00008b;"&gt;else&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
     &lt;span style="color:#00008b;"&gt;if&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;300gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 300GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
     &lt;span style="color:#00008b;"&gt;else&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
      &lt;span style="color:#00008b;"&gt;if&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;200gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 300GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
      &lt;span style="color:#00008b;"&gt;else&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
        &lt;span style="color:#00008b;"&gt;if&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;100gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 100GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
        &lt;span style="color:#00008b;"&gt;else&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
          &lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Insufficient disk space&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:#000000;"&gt;}&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;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;That’s not fun to write and its even less fun to debug or change&lt;/p&gt;

&lt;p&gt;The code can be simplified by using if – elseif – else&lt;/p&gt;

&lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Win32_LogicalDisk&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;DriveType=3&amp;quot;&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;if&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-gt&lt;/span&gt; &lt;span style="color:#800080;"&gt;1tb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 1TB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;elseif&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;500gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 500GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;elseif&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;300gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 300GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;elseif&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;200gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 300GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;elseif&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;FreeSpace&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;100gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 100GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Insufficient disk space&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;This much more compact and understandable. We can do a better job if we use a switch statement which is similar in concept to if-elseif-else&lt;/p&gt;

&lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Win32_LogicalDisk&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;DriveType=3&amp;quot;&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;switch&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;FreeSpace&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;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-gt&lt;/span&gt; &lt;span style="color:#800080;"&gt;1tb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 1TB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt; &lt;span style="color:#00008b;"&gt;break&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;$_&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;500gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 500GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt; &lt;span style="color:#00008b;"&gt;break&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;$_&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;300gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 300GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt; &lt;span style="color:#00008b;"&gt;break&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;$_&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;200gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 300GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt; &lt;span style="color:#00008b;"&gt;break&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;$_&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt; &lt;span style="color:#800080;"&gt;100gb&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:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Over 100GB of disk space free&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt; &lt;span style="color:#00008b;"&gt;break&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
 &lt;span style="color:#8a2be2;"&gt;default&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Insufficient disk space&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:#000000;"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;We select the object to test and use $_ as a placeholder. Each line in the switch statement is a single test. The default statement is for anything that doesn’t pass any of the preceding tests&lt;/p&gt;

&lt;p&gt;One difference between the if statements and switch is that with the if statements as soon as a condition is true testing stops. With switch testing would continue through all tests – break is used to stop that&lt;/p&gt;

&lt;p&gt;When you need to perform multiple tests consider using a switch statement – it is less typing and easier to debug&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #19 default parameters</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/16/scripting-games-2012-comments-19-default-parameters.aspx</link><pubDate>Wed, 16 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809872</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;I often saw scripts that did something like this&lt;/p&gt;  &lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;test1&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;param&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;            
   &lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$computername&lt;/span&gt;            
 &lt;span style="color:#000000;"&gt;)&lt;/span&gt;            
            
&lt;span style="color:#00008b;"&gt;if&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:#ff4500;"&gt;$computername&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;$computername&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$env:COMPUTERNAME&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:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Win32_OperatingSystem&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computername&lt;/span&gt;              
&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;A function, or script, defines a parameter. The first thing the function does it test the value of the parameter and if it doesn’t exist it sets it to a default value.&lt;/p&gt;

&lt;p&gt;No, no, no – you are making work for yourself.&amp;#160; &lt;/p&gt;

&lt;p&gt;Get PowerShell to do the work for you&lt;/p&gt;

&lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;test2&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
 &lt;span style="color:#00008b;"&gt;param&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;            
   &lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$computername&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$env:COMPUTERNAME&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:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Win32_OperatingSystem&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computername&lt;/span&gt;              
&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;See the difference?&lt;/p&gt;

&lt;p&gt;The parameter definition now contains a default value.&amp;#160; If you don’t specify the parameter and a value the default kicks in and the function works.&lt;/p&gt;

&lt;p&gt;Cuts down typing and gets PowerShell to do the work.&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #18 computer names</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/15/scripting-games-2012-comments-18-computer-names.aspx</link><pubDate>Tue, 15 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809845</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;I have mentioned computer names a few times. One oddity is accessing the local machine.&lt;/p&gt;  &lt;p&gt;There are three options&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;dot&amp;#160; . &lt;/li&gt;    &lt;li&gt;localhost &lt;/li&gt;    &lt;li&gt;$env:COMPUTERNAME &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are a number of occasions when . and localhost fail.&lt;/p&gt;  &lt;p&gt;For example&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-EventLog -List -ComputerName .&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;font face="Courier New"&gt; Max(K) Retain OverflowAction&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Entries Log      &lt;br /&gt;&amp;#160; ------ ------ --------------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ------- ---       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 21,647 Application       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 512&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 OverwriteOlder&amp;#160;&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 DemoMate       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 HardwareEvents       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 512&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 OverwriteOlder&amp;#160;&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 Internet Explorer       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 Key Management Service       &lt;br /&gt;&amp;#160;&amp;#160; 8,192&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10 Media Center       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 512&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 OverwriteOlder&amp;#160;&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 MyNewLog       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 128&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 364 OAlerts       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1 Scripts       &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; Security       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 56,135 System       &lt;br /&gt;&amp;#160; 15,360&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10,918 Windows PowerShell&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;PS&amp;gt; Get-EventLog -List -ComputerName localhost     &lt;br /&gt;Get-EventLog : The network path was not found.     &lt;br /&gt;At line:1 char:13     &lt;br /&gt;+ Get-EventLog &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;#160; -List -ComputerName localhost     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + CategoryInfo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : NotSpecified: (:) [Get-EventLog], IOException     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.GetEventLogCommand&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-EventLog -List -ComputerName &amp;#39;localhost&amp;#39;    &lt;br /&gt;Get-EventLog : The network path was not found.     &lt;br /&gt;At line:1 char:13     &lt;br /&gt;+ Get-EventLog &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;#160; -List -ComputerName &amp;#39;localhost&amp;#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + CategoryInfo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : NotSpecified: (:) [Get-EventLog], IOException     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.GetEventLogCommand&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-EventLog -List -ComputerName $env:COMPUTERNAME&lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;font face="Courier New"&gt;Max(K) Retain OverflowAction&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Entries Log      &lt;br /&gt;&amp;#160; ------ ------ --------------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ------- ---       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 21,647 Application       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 512&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 OverwriteOlder&amp;#160;&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 DemoMate       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 HardwareEvents       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 512&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 OverwriteOlder&amp;#160;&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 Internet Explorer       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 Key Management Service       &lt;br /&gt;&amp;#160;&amp;#160; 8,192&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10 Media Center       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 512&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 OverwriteOlder&amp;#160;&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 MyNewLog       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 128&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 364 OAlerts       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1 Scripts       &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; Security       &lt;br /&gt;&amp;#160; 20,480&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 56,135 System       &lt;br /&gt;&amp;#160; 15,360&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 OverwriteAsNeeded&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10,918 Windows PowerShell&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Get-EventLog fails with localhost&lt;/p&gt;  &lt;p&gt;I always recommend using $env:COMPUTERNAME&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #17 opening a csv file</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/14/scripting-games-2012-comments-17-opening-a-csv-file.aspx</link><pubDate>Mon, 14 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809814</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;Some of the events involved creating a CSV file. While it wasn’t explicitly asked that you opened the file many entrants chose to add that code to their scripts.&lt;/p&gt;  &lt;p&gt;There were a number of options presented – most involving opening Excel and importing the CSV file.&lt;/p&gt;  &lt;p&gt;There is a much quicker way&lt;/p&gt;  &lt;p&gt;Invoke-Item -Path test.csv&lt;/p&gt;  &lt;p&gt;Invoke-Item causes any file to open in the default application associated with that file.&amp;#160; This will work for Office documents, text files and anything else that you can double click on a get it to open in an application.&lt;/p&gt;  &lt;p&gt;If you use Invoke-Item on a .ps1 file – it will open in notepad just as if you’d double clicked it.&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #15 pipelines</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/08/scripting-games-2012-comments-15-pipelines.aspx</link><pubDate>Tue, 08 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809632</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;There are a few comments to make about using the pipeline but one of the obvious issues I saw from the games was this type of approach&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;$p = Get-Process   &lt;br /&gt;$p | where {$_.Name -like &amp;quot;powershell*&amp;quot;}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The only time this is valid is if you need to access exactly the same data later in your script.&lt;/p&gt;  &lt;p&gt;In all other cases use&lt;/p&gt;  &lt;p&gt;Get-Process | where {$_.Name -like &amp;quot;powershell*&amp;quot;}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;if you want to split the lines to make it more readable the pipe symbol acts as a line continuation character so&lt;/p&gt;  &lt;p&gt;Get-Process |    &lt;br /&gt;where {$_.Name -like &amp;quot;powershell*&amp;quot;}&lt;/p&gt;  &lt;p&gt;is just as valid&lt;/p&gt;  &lt;p&gt;PowerShell is all about the pipeline – use it to your advantage&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #14 local computer name</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/07/scripting-games-2012-comments-14-local-computer-name.aspx</link><pubDate>Mon, 07 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809602</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;There are a number of ways to pass the names of the local machine into a script or function:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use the actual name &lt;/li&gt;
&lt;li&gt;use the IP address (if the processing in the script can work with IP addresses) &lt;/li&gt;
&lt;li&gt;use 127.0.0.1 &amp;ndash; the loop back address (if the processing in the script can work with IP addresses) &lt;/li&gt;
&lt;li&gt;use a dot&amp;nbsp; &amp;ldquo;.&amp;rdquo;&amp;nbsp; to signify the local machine &lt;/li&gt;
&lt;li&gt;use &amp;ldquo;localhost&amp;rdquo; &lt;/li&gt;
&lt;li&gt;use the environmental variable holding the machine name &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Normally we don&amp;rsquo;t use any of the first three because you either have to type out the name &amp;ndash; chance of error or the functionality within the script won&amp;rsquo;t accept IP addresses. Also the PSsession cmdlets only use computer names by default&lt;/p&gt;
&lt;p&gt;Traditionally we have used . or localhost especially when working with WMI&lt;/p&gt;
&lt;p&gt;Get-WmiObject -Class Win32_OperatingSystem -ComputerName . &lt;br /&gt;Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost&lt;/p&gt;
&lt;p&gt;There are a number of cmdlets that will accept a computer name as a parameter&lt;/p&gt;
&lt;p&gt;PS&amp;gt; Get-Help * -Parameter ComputerName | select name&lt;/p&gt;
&lt;p&gt;Name &lt;br /&gt;---- &lt;br /&gt;Get-WinEvent &lt;br /&gt;Get-Counter &lt;br /&gt;Test-WSMan &lt;br /&gt;Invoke-WSManAction &lt;br /&gt;Connect-WSMan &lt;br /&gt;Disconnect-WSMan &lt;br /&gt;Get-WSManInstance &lt;br /&gt;Set-WSManInstance &lt;br /&gt;Remove-WSManInstance &lt;br /&gt;New-WSManInstance &lt;br /&gt;Invoke-Command &lt;br /&gt;New-PSSession &lt;br /&gt;Get-PSSession &lt;br /&gt;Remove-PSSession &lt;br /&gt;Receive-Job &lt;br /&gt;Enter-PSSession &lt;br /&gt;Get-EventLog &lt;br /&gt;Clear-EventLog &lt;br /&gt;Write-EventLog &lt;br /&gt;Limit-EventLog &lt;br /&gt;Show-EventLog &lt;br /&gt;New-EventLog &lt;br /&gt;Remove-EventLog &lt;br /&gt;Get-WmiObject &lt;br /&gt;Invoke-WmiMethod &lt;br /&gt;Get-Process &lt;br /&gt;Remove-WmiObject &lt;br /&gt;Register-WmiEvent &lt;br /&gt;Get-Service &lt;br /&gt;Set-Service &lt;br /&gt;Set-WmiInstance &lt;br /&gt;Get-HotFix &lt;br /&gt;Test-Connection &lt;br /&gt;Restart-Computer &lt;br /&gt;Stop-Computer&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This works:&lt;/p&gt;
&lt;p&gt;Get-Process -ComputerName .&lt;/p&gt;
&lt;p&gt;but this throws an error&lt;/p&gt;
&lt;p&gt;PS&amp;gt; Get-Process -ComputerName localhost &lt;br /&gt;Get-Process : Couldn&amp;#39;t connect to remote machine. &lt;br /&gt;At line:1 char:12 &lt;br /&gt;+ Get-Process &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; -ComputerName localhost &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : NotSpecified: (:) [Get-Process], InvalidOperationException &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetProcessCommand&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve seen similar errors with Get-Eventlog&lt;/p&gt;
&lt;p&gt;PS&amp;gt; Get-EventLog -List -ComputerName .&lt;/p&gt;
&lt;p&gt;&amp;nbsp; Max(K) Retain OverflowAction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Entries Log &lt;br /&gt;&amp;nbsp; ------ ------ --------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ------- --- &lt;br /&gt;&amp;nbsp; 20,480&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21,814 Application &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 512&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 OverwriteOlder&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 DemoMate &lt;br /&gt;&amp;nbsp; 20,480&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 HardwareEvents &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 512&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 OverwriteOlder&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Internet Explorer &lt;br /&gt;&amp;nbsp; 20,480&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Key Management Service &lt;br /&gt;&amp;nbsp;&amp;nbsp; 8,192&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 Media Center &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 512&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 OverwriteOlder&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 MyNewLog &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 357 OAlerts &lt;br /&gt;&amp;nbsp; 20,480&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 Scripts &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Security &lt;br /&gt;&amp;nbsp; 20,480&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 56,225 System &lt;br /&gt;&amp;nbsp; 15,360&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 OverwriteAsNeeded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10,646 Windows PowerShell&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;PS&amp;gt; Get-EventLog -List -ComputerName localhost &lt;br /&gt;Get-EventLog : The network path was not found. &lt;br /&gt;At line:1 char:13 &lt;br /&gt;+ Get-EventLog &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; -List -ComputerName localhost &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : NotSpecified: (:) [Get-EventLog], IOException &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.GetEventLogCommand&lt;/p&gt;
&lt;p&gt;My solution and recommendation is to use the environmental variable for the computer name. &lt;/p&gt;
&lt;p&gt;PS&amp;gt; Get-ChildItem -Path env: | where {$_.name -like &amp;quot;*computer*&amp;quot;}&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value &lt;br /&gt;----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----- &lt;br /&gt;COMPUTERNAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RSLAPTOP01&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The environment provider doesn&amp;rsquo;t allow the use of filters so we have to use where&lt;/p&gt;
&lt;p&gt;How do we use this:&lt;/p&gt;
&lt;p&gt;Get-WmiObject -Class Win32_OperatingSystem -ComputerName $env:COMPUTERNAME &lt;br /&gt;Get-Process -ComputerName $env:COMPUTERNAME &lt;br /&gt;Get-EventLog -List -ComputerName $env:COMPUTERNAME&lt;/p&gt;
&lt;p&gt;It can also be used as the default value on a function parameter that asks for a computername &amp;ndash; that way you get the local machine if you don&amp;rsquo;t specify a value to the parameter.&lt;/p&gt;
&lt;p&gt;I have never seen this fail &amp;ndash; doesn&amp;rsquo;t mean it can&amp;rsquo;t just that I&amp;rsquo;ve never seen it &amp;ndash; and it has the advantage of being easier to read than using a dot&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #13 Default Printer</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/06/scripting-games-2012-comments-13-default-printer.aspx</link><pubDate>Sun, 06 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809563</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;In one of the events you had to find the default printer. This can be done using WMI.&lt;/p&gt;  &lt;p&gt;The full list of printers can seen using: &lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_Printer&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you want to examine the printer objecy – to determine what information is available - use get-member or select the first printer in the list&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_Printer | select -f 1 | fl *&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;you will see that there is a property Default&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-WmiObject -Class Win32_Printer | Get-Member Default&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160; TypeName: System.Management.ManagementObject#root\cimv2\Win32_Printer&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160; MemberType Definition     &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160; ---------- ----------      &lt;br /&gt;Default Property&amp;#160;&amp;#160; System.Boolean Default {get;set;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;which is Boolean i.e. it has to return true or false&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Your first thought might ne to do this:&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_Printer | where {$_.Default -eq $true}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;but it would be better coding practice to do this:&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_Printer | where {$_.Default}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On the local machine this is OK but if you are working remotely than all of the Win32_Printer objects would be returned and the filtering performed locally. Could be an expensive operation.&lt;/p&gt;  &lt;p&gt;The better option is to use the –Filter parameter on Get-WmiObject&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_Printer -Filter &amp;quot;Default = $true&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;this only returns a single&amp;#160; object&lt;/p&gt;  &lt;p&gt;If you want to use WQL then it becomes&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Query &amp;quot;SELECT * FROM Win32_Printer WHERE Default = $true&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In either case the filtering is done early to reduce the amount of data you are dealing with.&lt;/p&gt;  &lt;p&gt;Remember – Filter early &amp;amp; format late&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For more information on working with printers see chapter 10 of &lt;em&gt;PowerShell and WMI&lt;/em&gt; – &lt;a href="http://www.manning.com/powershellandwmi"&gt;http://www.manning.com/powershellandwmi&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #11–its true</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/05/scripting-games-2012-comments-11-its-true.aspx</link><pubDate>Sat, 05 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809525</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;The games are over for another year. The number of entries was huge – 150% increase over last year. Congratulations to the winners and to everyone who took part.&lt;/p&gt;  &lt;p&gt;One thing I noticed was the number of scripts that made testing booleans harder than it needed to be.&lt;/p&gt;  &lt;p&gt;A boolean can take one of two values – True or False. These are represented in PowerShell by $true and $false respectively&lt;/p&gt;  &lt;p&gt;Lets create a couple of variables&lt;/p&gt;  &lt;p&gt;PS&amp;gt; $x = $true   &lt;br /&gt;PS&amp;gt; $x    &lt;br /&gt;True    &lt;br /&gt;PS&amp;gt; $y = $false    &lt;br /&gt;PS&amp;gt; $y    &lt;br /&gt;False&lt;/p&gt;  &lt;p&gt;A common test was:&lt;/p&gt;  &lt;p&gt;PS&amp;gt; $a = $true   &lt;br /&gt;PS&amp;gt; $b = $false&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;PS&amp;gt; if ($a -eq $true){&amp;quot;Do something&amp;quot;}    &lt;br /&gt;Do something&lt;/p&gt;  &lt;p&gt;or you might see&lt;/p&gt;  &lt;p&gt;PS&amp;gt; if ($b -ne $true){&amp;quot;Do something else&amp;quot;}   &lt;br /&gt;Do something else&lt;/p&gt;  &lt;p&gt;These work and are perfectly understandable.&lt;/p&gt;  &lt;p&gt;They can be made simpler&lt;/p&gt;  &lt;p&gt;PS&amp;gt; if ($a){&amp;quot;Do something&amp;quot;}   &lt;br /&gt;Do something&lt;/p&gt;  &lt;p&gt;we get two ways of testing false using the –not operator and its alias of !&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;PS&amp;gt; if (-not $b){&amp;quot;Do something else&amp;quot;}    &lt;br /&gt;Do something else    &lt;br /&gt;PS&amp;gt; if (! $b){&amp;quot;Do something else&amp;quot;}    &lt;br /&gt;Do something else&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Just as a final test to show this really works&lt;/p&gt;  &lt;p&gt;PS&amp;gt; if ($b){&amp;quot;Do something&amp;quot;}else{&amp;quot;Do something else&amp;quot;}   &lt;br /&gt;Do something else&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The thing to remember is that on an if statement or anywhere else where a condition is being tested it has to resolve to true or false. In this case the variable (or object property) already carries a boolean value so we can use it directly.&lt;/p&gt;  &lt;p&gt;Its not a big saving but will mount up over time – keeps the scripts simpler and therefore keeps the errors down &lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #12 date conversions</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/05/scripting-games-2012-comments-12-date-conversions.aspx</link><pubDate>Sat, 05 May 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809534</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;A few times in the games you were asked for date time based information. Now WMI has a lot of classes that return WMI information. It is in an awkward format though&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-WmiObject -Class Win32_OperatingSystem | fl *time*&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;CurrentTimeZone : 60     &lt;br /&gt;LastBootUpTime&amp;#160; : 20120505101515.296000+060     &lt;br /&gt;LocalDateTime&amp;#160;&amp;#160; : 20120505192615.170000+060&lt;/p&gt;  &lt;p&gt;This translates as:&lt;/p&gt;  &lt;p&gt;Year – four digits    &lt;br /&gt;Month – two digits     &lt;br /&gt;Day - two digits     &lt;br /&gt;Hour - two digits     &lt;br /&gt;Minute - two digits     &lt;br /&gt;Second - two digits     &lt;br /&gt;.     &lt;br /&gt;millionth of second but is usually constrained to milliseconds     &lt;br /&gt;+     &lt;br /&gt;minutes difference from GMT (UTC)&lt;/p&gt;  &lt;p&gt;Its readable but only if you are used to it.&lt;/p&gt;  &lt;p&gt;Ideally we want to convert this to a more reasonable looking date such as &lt;/p&gt;  &lt;p&gt;05 May 2012 19:35:03&lt;/p&gt;  &lt;p&gt;It is possible to take the WMI information, break it up into its components – its is returned as a string – and create a datetime object. Alternatively you can hunt through the .NET classes and find some date conversion methods.&lt;/p&gt;  &lt;p&gt;That’s the hard way.&lt;/p&gt;  &lt;p&gt;The easy way is to use the built in functionality on the WMI class!&lt;/p&gt;  &lt;p&gt;If you put a WMI class through get-member you will discover a couple of Scriptmethods at the end of the data&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-WmiObject -Class Win32_OperatingSystem | Get-Member -MemberType ScriptMethod&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160; TypeName: System.Management.ManagementObject#root\cimv2\Win32_OperatingSystem&lt;/font&gt;&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&amp;#160;&amp;#160; 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; ----------&amp;#160;&amp;#160; ----------       &lt;br /&gt;ConvertFromDateTime ScriptMethod System.Object ConvertFromDateTime();       &lt;br /&gt;ConvertToDateTime&amp;#160;&amp;#160; ScriptMethod System.Object ConvertToDateTime();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;They are simple to use&lt;/p&gt;  &lt;p&gt;If you need the rest of the data on the object&lt;/p&gt;  &lt;p&gt;PS&amp;gt; $os = Get-WmiObject -Class Win32_OperatingSystem    &lt;br /&gt;PS&amp;gt; $os.ConvertToDateTime($os.LastBootUpTime)&lt;/p&gt;  &lt;p&gt;05 May 2012 10:15:15&lt;/p&gt;  &lt;p&gt;or if only want the last bootup time&lt;/p&gt;  &lt;p&gt;PS&amp;gt; $os = [wmiclass]&amp;quot;\\.\root\cimv2:Win32_OperatingSystem&amp;quot;    &lt;br /&gt;PS&amp;gt; $os.ConvertToDateTime($(Get-WmiObject Win32_OperatingSystem | select -ExpandProperty LastBootUpTime))&lt;/p&gt;  &lt;p&gt;05 May 2012 10:15:15&lt;/p&gt;  &lt;p&gt;There are variations on these themes.&lt;/p&gt;  &lt;p&gt;The conversion routines can be used in calculated fields in select and format cmdlets&lt;/p&gt;  &lt;p&gt;See &lt;em&gt;PowerShell and WMI &lt;/em&gt;chapters 3 and 4 for more details - &lt;a href="http://www.manning.com/powershellandwmi"&gt;http://www.manning.com/powershellandwmi&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scripting Games 2012 comments: #10 Advanced event 5</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/04/21/scripting-games-2012-comments-10-advanced-event-5.aspx</link><pubDate>Sat, 21 Apr 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809062</guid><dc:creator>RichardSiddaway</dc:creator><description>&lt;p&gt;&lt;a title="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/06/2012-scripting-games-advanced-event-5-list-errors.aspx" href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/06/2012-scripting-games-advanced-event-5-list-errors.aspx"&gt;http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/06/2012-scripting-games-advanced-event-5-list-errors.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is the one I was asked to supply a commentary for&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/20/expert-commentary-2012-scripting-games-advanced-event-5.aspx" href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/20/expert-commentary-2012-scripting-games-advanced-event-5.aspx"&gt;http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/20/expert-commentary-2012-scripting-games-advanced-event-5.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This one has raised an interesting interpretation issues.&amp;#160; The last design point asks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Your output should be organized such that the largest source of errors appears at the top of the output. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The figure shows the data sorted by Event source&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I read the design point as log with the largest number of errors comes first.&amp;#160; The script I produced for the commentary doesn’t meet that last design point so I’ve revised it&lt;/p&gt;  &lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#006400;"&gt;#Requires -Version 2&lt;/span&gt;            
&lt;span style="color:#00008b;"&gt;function&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Get-EventEntryCount&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:#add8e6;"&gt;CmdletBinding&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:#00008b;"&gt;param&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:#add8e6;"&gt;parameter&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;Position&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;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:#a9a9a9;"&gt;,&lt;/span&gt;             
   &lt;span style="color:#000000;"&gt;ValueFromPipelineByPropertyName&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;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#add8e6;"&gt;Alias&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;CN&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Computer&amp;quot;&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:#008080;"&gt;[string[]]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$computername&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;$env:COMPUTERNAME&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&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;Position&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&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:#a9a9a9;"&gt;]&lt;/span&gt;            
 &lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#add8e6;"&gt;ValidateSet&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Information&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;FailureAudit&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;SuccessAudit&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Warning&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;All&amp;quot;&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;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;            
 &lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$eventtype&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;             
&lt;span style="color:#000000;"&gt;)&lt;/span&gt;             
&lt;span style="color:#00008b;"&gt;BEGIN&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
  &lt;span style="color:#ff4500;"&gt;$currentUser&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#008080;"&gt;[Security.Principal.WindowsIdentity]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;GetCurrent&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;$testadmin&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&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:#0000ff;"&gt;New-Object&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Security.Principal.WindowsPrincipal&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$currentUser&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;IsInRole&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:#008080;"&gt;[Security.Principal.WindowsBuiltinRole]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;Administrator&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;            
              
  &lt;span style="color:#00008b;"&gt;if&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:#ff4500;"&gt;$testadmin&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:#00008b;"&gt;Throw&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Must be run with elevated privileges&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:#006400;"&gt;#begin &lt;/span&gt;            
&lt;span style="color:#00008b;"&gt;PROCESS&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
  &lt;span style="color:#00008b;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt; &lt;span style="color:#00008b;"&gt;in&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computername&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:#00008b;"&gt;switch&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&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:#000000;"&gt;{&lt;/span&gt;            
     &lt;span style="color:#8b0000;"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;         &lt;span style="color:#000000;"&gt;{&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;$env:COMPUTERNAME&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
     &lt;span style="color:#8b0000;"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&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;$env:COMPUTERNAME&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:#0000ff;"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Processing computer: $computer&amp;quot;&lt;/span&gt;            
                
    &lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&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:#00008b;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-Connection&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Count&lt;/span&gt; &lt;span style="color:#800080;"&gt;1&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Quiet&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:#0000ff;"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Starting Remote Registry service on $computer&amp;quot;&lt;/span&gt;            
    &lt;span style="color:#ff4500;"&gt;$origrrsrv&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Get-WmiObject&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Win32_Service&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Name=&amp;#39;RemoteRegistry&amp;#39;&amp;quot;&lt;/span&gt; &lt;span style="color:#000000;"&gt;`
&lt;/span&gt;    &lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt;            
            
    &lt;span style="color:#00008b;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$origrrsrv&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;StartMode&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Disabled&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:#0000ff;"&gt;Set-Service&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;RemoteRegistry&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt; &lt;span style="color:#000080;"&gt;-StartupType&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Manual&amp;quot;&lt;/span&gt;            
    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
            
    &lt;span style="color:#00008b;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$origrrsrv&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;State&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ne&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Running&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:#ff4500;"&gt;$origrrsrv&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;StartService&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:#0000ff;"&gt;Out-Null&lt;/span&gt;            
    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
            
    &lt;span style="color:#0000ff;"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Retrieving logs for $computer&amp;quot;&lt;/span&gt;            
                  
    &lt;span style="color:#0000ff;"&gt;Get-EventLog&lt;/span&gt; &lt;span style="color:#000080;"&gt;-List&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ComputerName&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:#0000ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
      &lt;span style="color:#ff4500;"&gt;$log&lt;/span&gt; &lt;span style="color:#a9a9a9;"&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;Log&lt;/span&gt;            
      &lt;span style="color:#0000ff;"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Processing log: $log&amp;quot;&lt;/span&gt;            
                    
      &lt;span style="color:#00008b;"&gt;if&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;Entries&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Count&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-gt&lt;/span&gt; &lt;span style="color:#800080;"&gt;0&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:#0000ff;"&gt;Write-Debug&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Processing event type $eventtype&amp;quot;&lt;/span&gt;            
                      
         &lt;span style="color:#ff4500;"&gt;$n&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Get-EventLog&lt;/span&gt; &lt;span style="color:#000080;"&gt;-LogName&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;Log&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt; &lt;span style="color:#000080;"&gt;-EntryType&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$eventtype&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ComputerName&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:#000080;"&gt;-ErrorAction&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;SilentlyContinue&lt;/span&gt;            
                      
         &lt;span style="color:#00008b;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$n&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-ne&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$null&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:#0000ff;"&gt;Write-Debug&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Entries found&amp;quot;&lt;/span&gt;            
           &lt;span style="color:#ff4500;"&gt;$n&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;group&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Source&lt;/span&gt; &lt;span style="color:#000080;"&gt;-NoElement&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;             
           &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
                       
              &lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;+=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New-Object&lt;/span&gt; &lt;span style="color:#000080;"&gt;-TypeName&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;PSObject&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Property&lt;/span&gt; &lt;span style="color:#000000;"&gt;@{&lt;/span&gt;            
                 &lt;span style="color:#000000;"&gt;ComputerName&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt;            
                 &lt;span style="color:#000000;"&gt;LogName&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$log&lt;/span&gt;            
                 &lt;span style="color:#000000;"&gt;EntryType&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$eventtype&lt;/span&gt;            
                 &lt;span style="color:#000000;"&gt;EntrySource&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&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;)&lt;/span&gt;            
                 &lt;span style="color:#000000;"&gt;EntryCount&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&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;Count&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;}&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:#006400;"&gt;# end if entries&lt;/span&gt;            
       &lt;span style="color:#00008b;"&gt;else&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
         &lt;span style="color:#0000ff;"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;$($computer): $log is empty&amp;quot;&lt;/span&gt;            
       &lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
                    
            
        &lt;span style="color:#00008b;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$origrrsrv&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;State&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Stopped&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:#ff4500;"&gt;$origrrsrv&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;StopService&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:#0000ff;"&gt;Out-Null&lt;/span&gt;            
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
            
        &lt;span style="color:#00008b;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$origrrsrv&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;StartMode&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Disabled&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:#0000ff;"&gt;Set-Service&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;RemoteRegistry&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ComputerName&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$computer&lt;/span&gt; &lt;span style="color:#000080;"&gt;-StartupType&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Disabled&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:#006400;"&gt;# end of log processing foreach&lt;/span&gt;            
   &lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
   &lt;span style="color:#00008b;"&gt;else&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;            
     &lt;span style="color:#0000ff;"&gt;Write-Warning&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Cannot contact $computer&amp;quot;&lt;/span&gt;            
   &lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;span style="color:#006400;"&gt;# end if ping&lt;/span&gt;            
   &lt;span style="color:#0000ff;"&gt;Write-Output&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;             
 &lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;span style="color:#006400;"&gt;## end computer foreach&lt;/span&gt;            
&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#006400;"&gt;#process &lt;/span&gt;            
&lt;span style="color:#00008b;"&gt;END&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:#006400;"&gt;#end&lt;/span&gt;            
            
&lt;span style="color:#006400;"&gt;&amp;lt;# 
.SYNOPSIS
Counts the number of entries of a given type
in the event logs of a system

.DESCRIPTION
One or more computers - from pipeline or parameter -  are
accessed to read the envent logs and count the entries of a 
given type. Empty logs are tested and the count is set to zero

.PARAMETER  computername
Name of computer for which log information
is to be retrieved

.PARAMETER  eventtype
Log entry type to count.
Accepted values are - 
&amp;quot;Error&amp;quot;, &amp;quot;Information&amp;quot;, &amp;quot;FailureAudit&amp;quot;, 
&amp;quot;SuccessAudit&amp;quot;, &amp;quot;Warning&amp;quot;, &amp;quot;All&amp;quot;, &amp;quot;*&amp;quot;

.EXAMPLE
Get-EventEntryCount 

Accesses logs on local machine. Peforms default display

.EXAMPLE
Get-EventEntryCount -computername &amp;quot;.&amp;quot; | 
sort LogName, EntryCount -Descending | 
Format-Table EntrySource, EntryCount -GroupBy LogName

Accesses logs on local machine. Format display and group by logname

.EXAMPLE
&amp;quot;dc02&amp;quot;, &amp;quot;webr201&amp;quot;, &amp;quot;server02&amp;quot; | 
Get-EventEntryCount | 
sort Computer, LogName, EntryCount -Descending | 
Format-Table Logname, EntrySource, EntryCount -GroupBy Computer

Accesses logs on remote machines. Computer names accepted from pipeline.
Format display and group by computer

.EXAMPLE
Get-EventEntryCount -computername &amp;quot;dc02&amp;quot;, &amp;quot;webr201&amp;quot;, &amp;quot;server02&amp;quot; |
sort Computer, LogName, EntryCount -Descending | 
Format-Table Logname, EntrySource, EntryCount -GroupBy Computer

Accesses logs on remote machines. Computer names accepted as array.
Format display and group by computer

.INPUTS
Computer name - string or string array
Envent type - string. Must be member of set

.OUTPUTS
Returns a custom object with
properties:
ComputerName - name of computer
LogName - name of log
EntryType - Type of log entry
EntryCount - count of entries
EntrySource - event source

.NOTES


.LINK

#&amp;gt;&lt;/span&gt;            
            
&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/pre&gt;</description></item></channel></rss>