<?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</title><link>http://msmvps.com/blogs/richardsiddaway/default.aspx</link><description>Of PowerShell and Other Things</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Unblocking Files with PowerShell v3</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/24/unblocking-files-with-powershell-v3.aspx</link><pubDate>Thu, 24 May 2012 19:55:59 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810264</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=1810264</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/24/unblocking-files-with-powershell-v3.aspx#comments</comments><description>&lt;p&gt;There are a number of new features in PowerShell v3 that while not huge like CIM or workflow are os significant help to the hard pressed administrator.&amp;#160; One of these is the Unblock-File cmdlet.&lt;/p&gt;  &lt;p&gt;If you haven’t updated your help the online version is available at &lt;a title="http://technet.microsoft.com/en-us/library/hh849924.aspx" href="http://technet.microsoft.com/en-us/library/hh849924.aspx"&gt;http://technet.microsoft.com/en-us/library/hh849924.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To test it I downloaded the PowerShell v2 release notes from &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/en-us/download/details.aspx?id=11539" href="http://www.microsoft.com/en-us/download/details.aspx?id=11539"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=11539&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The gives me a file&lt;/p&gt;  &lt;p&gt;Windows Mangement Framework Release Notes en-US.rtf&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When you download a file – internet explorer safety mechanisms kick in and the file is blocked. This prevents a number of things happening including running scripts&lt;/p&gt;  &lt;p&gt;You can test if a file is blocked by right clicking the file and looking at its properties – it will have an Unblock button at the bottom right of the dialog.&lt;/p&gt;  &lt;p&gt;You can also use PowerShell to do this.&lt;/p&gt;  &lt;p&gt;First we need to identify the files that are blocked.&amp;#160; These are files with an Alternative Data Stream of “Zone.Identifier”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Item -Path &amp;quot;c:\test\Windows Mangement Framework Release Notes en-US.rtf&amp;quot; -Stream &amp;quot;Zone.Identifier&amp;quot;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&amp;#160;&amp;#160; FileName: C:\test\Windows Mangement Framework Release Notes en-US.rtf&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Stream&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Length     &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; ------      &lt;br /&gt;Zone.Identifier&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 26&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you try to test multiple files&lt;/p&gt;  &lt;p&gt;Get-Item -Path c:\test\*.* -Stream &amp;quot;Zone.Identifier&amp;quot;&lt;/p&gt;  &lt;p&gt;be prepared for lots of error messages when the system doesn’t find an alternative data stream.&amp;#160; Better still control the error messages&lt;/p&gt;  &lt;p&gt;Get-Item -Path c:\test\*.* -Stream &amp;quot;Zone.Identifier&amp;quot; -ErrorAction SilentlyContinue&lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;font face="Courier New"&gt; FileName: C:\test\indice_analitico.pdf&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Stream&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Length     &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; ------      &lt;br /&gt;Zone.Identifier&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 26&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160; FileName: C:\test\Windows Mangement Framework Release Notes en-US.rtf&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Stream&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Length     &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; ------      &lt;br /&gt;Zone.Identifier&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 26&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now I don’t recognise that pdf file so I’ll leave that for later&lt;/p&gt;  &lt;p&gt;Either of these will filter on the extension&lt;/p&gt;  &lt;p&gt;Get-Item -Path c:\test\*.rtf -Stream &amp;quot;Zone.Identifier&amp;quot; -ErrorAction SilentlyContinue   &lt;br /&gt;Get-Item -Path c:\test\*.* -Filter *.rtf -Stream &amp;quot;Zone.Identifier&amp;quot; -ErrorAction SilentlyContinue&lt;/p&gt;  &lt;p&gt;Once you have the file&lt;/p&gt;  &lt;p&gt;Get-Item -Path c:\test\*.* -Filter *.rtf -Stream &amp;quot;Zone.Identifier&amp;quot; -ErrorAction SilentlyContinue | Unblock-File&lt;/p&gt;  &lt;p&gt;won’t work because only the –LiteralPath parameter of Unblock-File takes pipeline input and that’s by property name&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;These two options will work&lt;/p&gt;  &lt;p&gt;Get-Item -Path c:\test\*.* -Filter *.rtf -Stream &amp;quot;Zone.Identifier&amp;quot; -ErrorAction SilentlyContinue |    &lt;br /&gt;foreach {Unblock-File -Path $_.FileName }&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Get-ChildItem -Path c:\test\*.* -Filter *.rtf | Unblock-File &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I prefer the first because it allows me to test and then modify to perform the unblock.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810264" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/File+System/default.aspx">File System</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V3/default.aspx">PowerShell V3</category></item><item><title>WMI providers</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/23/wmi-providers.aspx</link><pubDate>Wed, 23 May 2012 18:44:53 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810185</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=1810185</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/23/wmi-providers.aspx#comments</comments><description>&lt;p&gt;I found a class new to me - Msft_Providers and this got me interested in WMI providers. &lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-CimInstance -Class Msft_Providers | select -ExpandProperty provider    &lt;br /&gt;Msft_ProviderSubSystem     &lt;br /&gt;SCM Event Provider     &lt;br /&gt;WmiPerfClass&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That seems a bit low. Digging a bit more I got back to the old favourite __provider.&lt;/p&gt;  &lt;p&gt;Get-CimInstance -Class __provider | Measure-Object&lt;/p&gt;  &lt;p&gt;produces an answer of 43 – not quite the answer to life, the universe and everything but close.&lt;/p&gt;  &lt;p&gt;Is there any overlap between the two groups of providers?&lt;/p&gt;  &lt;p&gt;&lt;span style="color:#ff4500;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color:#ff4500;"&gt;$providers&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Get-CimInstance&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Msft_Providers&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ExpandProperty&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;provider&lt;/span&gt;&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;&lt;span style="color:#0000ff;"&gt;Get-CimInstance&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;__provider&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Name&lt;/span&gt; &lt;span style="color:#000080;"&gt;-in&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$providers&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;Name&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;provides the answer&lt;/p&gt;  &lt;p&gt;Msft_ProviderSubSystem&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;SCM Event Provider &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In case you were wondering – “Starting with Windows Vista, the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa394546(v=vs.85).aspx"&gt;WMIPerfClass Provider&lt;/a&gt; and the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa394547(v=vs.85).aspx"&gt;WMIPerfInst Provider&lt;/a&gt; dynamically provide performance counter data for the WMI &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa392738(v=vs.85).aspx"&gt;Performance Counter Classes&lt;/a&gt;.”&lt;/p&gt;  &lt;p&gt;see &lt;a title="http://msdn.microsoft.com/en-us/library/windows/desktop/aa392740(v=vs.85).aspx" href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa392740(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/aa392740(v=vs.85).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;One interesting property is the Hosting Model&lt;/p&gt;  &lt;p&gt;Get-CimInstance -Class __provider | select HostingModel -Unique&lt;/p&gt;  &lt;p&gt;Decoupled:NonCOM    &lt;br /&gt;NetworkServiceHost     &lt;br /&gt;WmiCore     &lt;br /&gt;LocalSystemHost     &lt;br /&gt;LocalServiceHost&lt;/p&gt;  &lt;p&gt;NetworkServiceHost:[ReliabilityMetricsProvider]&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;But what do these mean&lt;/p&gt;  &lt;p&gt;Full explanations for these and the other hosting models can be found at &lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/aa392509(VS.85).aspx" href="http://msdn.microsoft.com/en-us/library/aa392509(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa392509(VS.85).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;WmiCore - Activate provider in host to the WMI service. This hosting model is only supported for operating system components.&lt;/p&gt;  &lt;p&gt;WmiCoreOrSelfHost - Activate provider in host to the WMI service or as local server. This hosting model is only supported for operating system components.&lt;/p&gt;  &lt;p&gt;SelfHost - Activate provider as a local server implementation.&lt;/p&gt;  &lt;p&gt;Decoupled:Com - Activate provider as a decoupled COM provider. See &lt;a href="http://msdn.microsoft.com/en-us/library/aa390882(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa390882(v=vs.85).aspx&lt;/a&gt;    &lt;br /&gt;&amp;#160; &lt;br /&gt;Decoupled:NonCom - Activate provider as a non-COM event provider.    &lt;br /&gt;&amp;#160; &lt;br /&gt;LocalSystemHost - Activate provider in the provider host process that is running under the LocalSystem account. &lt;/p&gt;  &lt;p&gt;LocalSystemHostOrSelfHost - The provider is self-hosted or loaded into the Wmiprvse.exe process running under the LocalSystem account. &lt;/p&gt;  &lt;p&gt;NetworkServiceHost - Activate provider in the provider host process that is running under the NetworkService account.&lt;/p&gt;  &lt;p&gt;LocalServiceHost - Activate provider in the provider host process that is running under the LocalService account. &lt;/p&gt;  &lt;p&gt;NetworkServiceHostOrSelfHost - The provider is self-hosted or loaded into the WmiPrvse.exe process running under the NetworkService account. NetworkServiceHostOrSelfHost is the default configuration when the HostingModel property in __Win32Provider is NULL. Because NetworkServiceHostOrSelfHost is the default, providers from earlier operating systems can continue to work in Windows Vista, Windows Server 2008, and later operating systems.&lt;/p&gt;  &lt;p&gt;Get-CIMInstance is a new cmdlet in PowerShell v3. It is part of the new API for working with WMI. I will be blogging about these in greater detail over the next weeks and months as Powershell v3 is released.&lt;/p&gt;  &lt;p&gt;More information on providers and the CIM cmdlets can be found in &lt;em&gt;PowerShell and WMI&lt;/em&gt; – &lt;a href="http://www.manning.com/powershellandwmi"&gt;www.manning.com/powershellandwmi&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810185" 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+V3/default.aspx">PowerShell V3</category></item><item><title>Where-object in PowerShell v3</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/22/where-object-in-powershell-v3.aspx</link><pubDate>Tue, 22 May 2012 19:32:55 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810122</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=1810122</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/22/where-object-in-powershell-v3.aspx#comments</comments><description>&lt;p&gt;Where-Object – aliased to where, but never, ever, ever, ever to ? – had a very simple syntax in PowerShell v2&lt;/p&gt;  &lt;p&gt;Where-Object [-FilterScript] &amp;lt;scriptblock&amp;gt; [-InputObject &amp;lt;psobject&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]&lt;/p&gt;  &lt;p&gt;It was normally used as &lt;/p&gt;  &lt;p&gt;Get-Process | where {$_.CPU -gt 25}&lt;/p&gt;  &lt;p&gt;The –FilterScript parameter (positional as 1 so don’t have to use it) supplies a script block that performs the filtering. In this case it looks at the current object on the pipeline (indicated by $_) and compares the CPU property to 25. If the property has a greater value it is passed.&lt;/p&gt;  &lt;p&gt;Any of the comparison operators could be used in the filter block.&lt;/p&gt;  &lt;p&gt;With PowerShell v3 it gets easier&lt;/p&gt;  &lt;p&gt;Get-Process | where CPU -gt 25&lt;/p&gt;  &lt;p&gt;We can just give the property name, the comparison operator and the value.&amp;#160; &lt;/p&gt;  &lt;p&gt;This only works for a single property. You can’t do this&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Process | where CPU -gt 25 -and Handles -gt 2000    &lt;br /&gt;Where-Object : Cannot bind parameter because parameter &amp;#39;gt&amp;#39; is specified more than once. To provide multiple values to     &lt;br /&gt;parameters that can accept multiple values, use the array syntax. For example, &amp;quot;-parameter value1,value2,value3&amp;quot;.     &lt;br /&gt;At line:1 char:45     &lt;br /&gt;+ Get-Process | where CPU -gt 25 -and Handles -gt 2000     &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; ~~~     &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; : InvalidArgument: (:) [Where-Object], ParameterBindingException     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + FullyQualifiedErrorId : ParameterAlreadyBound,Microsoft.PowerShell.Commands.WhereObjectCommand&lt;/p&gt;  &lt;p&gt;You have to go back to&lt;/p&gt;  &lt;p&gt;Get-Process | where {$_.CPU -gt 25 -and $_.Handles -gt 2000}&lt;/p&gt;  &lt;p&gt;but hang on a minute the error message said that gt is a parameter!&lt;/p&gt;  &lt;p&gt;If you look at the help file for where-object you will see lots of lines like this&lt;/p&gt;  &lt;p&gt;Where-Object [-FilterScript] &amp;lt;ScriptBlock&amp;gt; [-InputObject &amp;lt;PSObject&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]    &lt;br /&gt;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-EQ [&amp;lt;SwitchParameter&amp;gt;]] [-InputObject &amp;lt;PSObject&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -Contains [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -GE [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -In [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CContains [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CEQ [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CGE [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CGT [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CIn [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CLE [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CLike [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CLT [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CMatch [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CNE [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CNotContains [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CNotIn [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CNotLike [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -CNotMatch [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -Is [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -IsNot [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -LE [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -Like [&amp;lt;SwitchParameter&amp;gt;] &amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -LT [&amp;lt;SwitchParameter&amp;gt;] &amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -Match [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -NE [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -NotContains [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -NotIn [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -NotLike [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Where-Object [-Property] &amp;lt;String&amp;gt; [[-Value] &amp;lt;Object&amp;gt;] [-InputObject &amp;lt;PSObject&amp;gt;] -NotMatch [&amp;lt;SwitchParameter&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]&lt;/p&gt;  &lt;p&gt;The first option is the PowerShell v2 version.&amp;#160; &lt;/p&gt;  &lt;p&gt;Notice that the comparison operators are switch parameters and each is in a different parameter set – thats why you can’t have multiples&lt;/p&gt;  &lt;p&gt;This is a very useful addition to where-object that simplifies syntax (we often only perform a single comparison in the filter) and reduces typing.&lt;/p&gt;  &lt;p&gt;It still doesn’t change the fact that you should never, ever, ever, ever alias where-object to ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810122" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V3/default.aspx">PowerShell V3</category></item><item><title>UK PowerShell group–next two meetings</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/21/uk-powershell-group-next-two-meetings.aspx</link><pubDate>Mon, 21 May 2012 19:55:25 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810057</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=1810057</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/21/uk-powershell-group-next-two-meetings.aspx#comments</comments><description>&lt;p&gt;29 May 2012&lt;/p&gt;  &lt;p&gt;PowerShell and Windows server 2012 – new functionality pt 2&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msmvps.com/blogs/richardsiddaway/archive/2012/05/08/uk-powershell-group-may-2012.aspx" href="http://msmvps.com/blogs/richardsiddaway/archive/2012/05/08/uk-powershell-group-may-2012.aspx"&gt;http://msmvps.com/blogs/richardsiddaway/archive/2012/05/08/uk-powershell-group-may-2012.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;4 July&lt;/p&gt;  &lt;p&gt;Jonathan Medd &lt;/p&gt;  &lt;p&gt;XenDesktop and PowerShell&lt;/p&gt;  &lt;p&gt;This will be at the slightly later time of 8.30 BST.&amp;#160; Details to follow&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810057" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+User+Group/default.aspx">PowerShell User Group</category></item><item><title>Using Invoke-WmiMethod to set the DNS servers</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/20/using-invoke-wmimethod-to-set-the-dns-servers.aspx</link><pubDate>Sun, 20 May 2012 18:41:32 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810030</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=1810030</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/20/using-invoke-wmimethod-to-set-the-dns-servers.aspx#comments</comments><description>&lt;p&gt;In the last post I showed that there was an issue with the way the SetDNSServerSearchOrder of the Win32_NetworkAdapterConfiguration class worked&lt;/p&gt;  &lt;p&gt;This would work&lt;/p&gt;  &lt;p&gt;$nic = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter &amp;quot;Index=7&amp;quot;    &lt;br /&gt;$nic.SetDNSServerSearchOrder(&amp;quot;10.10.54.201&amp;quot;) &lt;/p&gt;  &lt;p&gt;but using Invoke-WmiMethod failed&lt;/p&gt;  &lt;p&gt;After discussions with Bartek Bielawski (PowerShell MVP) and a bit more digging I found that for multiple DNS servers this would work&lt;/p&gt;  &lt;p&gt;$dnsserver = &amp;quot;10.10.54.201&amp;quot;, &amp;quot;10.10.54.98&amp;quot;    &lt;br /&gt;Get-WmiObject -Class Win32_NetworkAdapterConfiguration&amp;#160; -Filter &amp;quot;Index=7&amp;quot; | Invoke-WmiMethod -Name SetDNSServerSearchOrder -ArgumentList (, $dnsserver)&lt;/p&gt;  &lt;p&gt;Its necessary to create an array as the input argument&amp;#160; (, $variable) – its a unary array ie one element array&lt;/p&gt;  &lt;p&gt;if you want to use just a single DNS server then you need to use the unary array trick twice – once when you create the variable and again when you use Invoke-wmimethod.&amp;#160; Messy but it works&lt;/p&gt;  &lt;p&gt;$dnsserver = (,&amp;quot;10.10.54.201&amp;quot;)    &lt;br /&gt;Get-WmiObject -Class Win32_NetworkAdapterConfiguration&amp;#160; -Filter &amp;quot;Index=7&amp;quot; | Invoke-WmiMethod -Name SetDNSServerSearchOrder -ArgumentList (, $dnsserver)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you want to use the new CIM cmdlets in PowerShell v3 – its easy if you have multiple DNS servers&lt;/p&gt;  &lt;p&gt;$dnsserver = &amp;quot;10.10.54.201&amp;quot;, &amp;quot;10.10.54.98&amp;quot;    &lt;br /&gt;Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter &amp;quot;Index=7&amp;quot; | Invoke-CimMethod -MethodName SetDNSServerSearchOrder -Arguments @{DNSServerSearchOrder = $dnsserver}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;for a single one we just need to create a unary array on the Arguments parameter    &lt;br /&gt;$dnsserver = &amp;quot;10.10.54.201&amp;quot;     &lt;br /&gt;Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter &amp;quot;Index=7&amp;quot; | Invoke-CimMethod -MethodName SetDNSServerSearchOrder -Arguments @{DNSServerSearchOrder = (,$dnsserver)}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is not satisfactory because we have to adopt different techniques depending on the number of DNS servers we need to put into NIC property. This is NOT a PowerShell issue – it has to be a WMI issue because the IP address that we saw last time also takes an array and it was very happy with a single value.&lt;/p&gt;  &lt;p&gt;Hopefully this is not something that will come up too often but be aware of these options when working with WMI methods&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810030" 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><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Networking/default.aspx">Networking</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V3/default.aspx">PowerShell V3</category></item><item><title>TCP/IP Alternative Configurations: pt IV reset to static address</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/20/tcp-ip-alternative-configurations-pt-iv-reset-to-static-address.aspx</link><pubDate>Sun, 20 May 2012 10:33:05 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810008</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=1810008</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/20/tcp-ip-alternative-configurations-pt-iv-reset-to-static-address.aspx#comments</comments><description>&lt;p&gt;At some stage we may need to reset our NIC back to having a static address&lt;/p&gt;  &lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#ff4500;"&gt;$index&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#800080;"&gt;7&lt;/span&gt;            
            
&lt;span style="color:#ff4500;"&gt;$nic&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_NetworkAdapterConfiguration&lt;/span&gt; &lt;span style="color:#000000;"&gt;`
&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Index=$index&amp;quot;&lt;/span&gt;             
            
&lt;span style="color:#ff4500;"&gt;$ipaddress&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:#8b0000;"&gt;&amp;quot;10.10.54.202&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;            
&lt;span style="color:#ff4500;"&gt;$subnet&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:#8b0000;"&gt;&amp;quot;255.255.255.0&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-InputObject&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$nic&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;EnableStatic&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$ipaddress&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$subnet&lt;/span&gt;            
            
&lt;span style="color:#ff4500;"&gt;$dnsserver&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;10.10.54.201&amp;quot;&lt;/span&gt;            
&lt;span style="color:#ff4500;"&gt;$nic&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SetDNSServerSearchOrder&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$dnsserver&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;            
            
&lt;span style="color:#006400;"&gt;#Invoke-WmiMethod -InputObject $nic -Name SetDNSServerSearchOrder -ArgumentList $dnsserver&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;We get the configuration of the NIC and use the EnableStatic method to set the address and subnet&lt;/p&gt;

&lt;p&gt;The SetDNSServerSearchOrder method is used to set the DNS server. &lt;/p&gt;

&lt;p&gt;Notice I haven’t been able to use Invoke-WmiMethod at this point – I’ve had to call the method directly on the object. There appears to be an issue with the formatting of the DNS server addresses as Invoke-WmiMethod complains that the argument has to be an array.&lt;/p&gt;

&lt;p&gt;This is under investigation.&lt;/p&gt;

&lt;p&gt;More on using WMI with PowerShell can be found in &lt;em&gt;PowerShell and WMI&lt;/em&gt;. Chapter 11 covers network adapters in detail.&amp;#160; More details from &lt;a href="http://www.manning.com/powershellandwmi"&gt;www.manning.com/powershellandwmi&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810008" 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/Networking/default.aspx">Networking</category></item><item><title>TCP/IP Alternative Configurations: pt III set the alternative configuration</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/18/tcp-ip-alternative-configurations-pt-iii-set-the-alternative-configuration.aspx</link><pubDate>Fri, 18 May 2012 20:01:43 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809954</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=1809954</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/18/tcp-ip-alternative-configurations-pt-iii-set-the-alternative-configuration.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We have seen how to set the NIC to use DHCP to get its address. This post shows how to set the alternative configuration on the NIC. If you just&amp;#160; want APIPA then do nothing – other wise use this script&lt;/p&gt;  &lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#ff4500;"&gt;$HKLM&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#800080;"&gt;2147483650&lt;/span&gt; &lt;span style="color:#006400;"&gt;#HKEY_LOCAL_MACHINE&lt;/span&gt;            
            
&lt;span style="color:#ff4500;"&gt;$index&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#800080;"&gt;7&lt;/span&gt;            
&lt;span style="color:#ff4500;"&gt;$nic&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_NetworkAdapterConfiguration&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Index=$index&amp;quot;&lt;/span&gt;            
            
&lt;span style="color:#ff4500;"&gt;$key&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\$($nic.SettingID)&amp;quot;&lt;/span&gt;            
            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegprov&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;SetDWORDvalue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;AddressType&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#800080;"&gt;2&lt;/span&gt;            
            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegprov&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;SetMULTISTRINGvalue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Alternate_$($nic.SettingID)&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;ActiveConfigurations&amp;quot;&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegprov&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;SetSTRINGvalue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;10.10.54.202&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;DhcpIpAddress&amp;quot;&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegprov&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;SetSTRINGvalue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;10.10.54.201&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;DhcpNameServer&amp;quot;&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegprov&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;SetSTRINGvalue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;255.255.255.0&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;DhcpSubnetMask&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Again I’m cheating by defining the NIC in terms of its Index number&lt;/p&gt;

&lt;p&gt;The registry key is derived from the SettingID property of the NIC&lt;/p&gt;

&lt;p&gt;We then need to set a number of registry values. The AddressType sets the alternative configuration to use our informations rather than APIPA. The ActiveCinfigurations value is set using the SettingID property of the NIC&lt;/p&gt;

&lt;p&gt;The address, subnetmask, and names server are set. &lt;/p&gt;

&lt;p&gt;If you look carefully at the lines where we use the SetMULTISTRINGvalue and SetSTRINGvalue methods you will notice that we give the hive, key, value and then registry value name&amp;#160; whereas the SetDWORDvalue method we give hive, key, value name and then value.&lt;/p&gt;

&lt;p&gt;This is a quirk of Invoke-WmiMethod&lt;/p&gt;

&lt;p&gt;The WMI documentation for SetMULTISTRINGvalue and SetSTRINGvalue methods state the parameters should be:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;hive &lt;/li&gt;

  &lt;li&gt;registry key &lt;/li&gt;

  &lt;li&gt;registry value name &lt;/li&gt;

  &lt;li&gt;value &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This order is constant across the Set* methods of the StdRegProv class -&amp;#160; see &lt;a title="http://msdn.microsoft.com/en-us/library/windows/desktop/aa393600(v=vs.85).aspx" href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa393600(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/aa393600(v=vs.85).aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we do some investigation&lt;/p&gt;

&lt;p&gt;PS&amp;gt; ([wmiclass]&amp;quot;StdRegprov&amp;quot;).GetMethodParameters(&amp;#39;SetSTRINGvalue&amp;#39;)&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;font face="Courier New"&gt;__GENUS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 2 
    &lt;br /&gt;__CLASS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : __PARAMETERS 

    &lt;br /&gt;__SUPERCLASS&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 

    &lt;br /&gt;__DYNASTY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : __PARAMETERS 

    &lt;br /&gt;__RELPATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 

    &lt;br /&gt;__PROPERTY_COUNT : 4 

    &lt;br /&gt;__DERIVATION&amp;#160;&amp;#160;&amp;#160;&amp;#160; : {} 

    &lt;br /&gt;__SERVER&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 

    &lt;br /&gt;__NAMESPACE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 

    &lt;br /&gt;__PATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 

    &lt;br /&gt;hDefKey&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 2147483650 

    &lt;br /&gt;sSubKeyName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 

    &lt;br /&gt;sValue&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : hello 

    &lt;br /&gt;sValueName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 

    &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;This clearly shows we need to give the value before the value name.&lt;/p&gt;

&lt;p&gt;the same holds true if we investigate using Get-CimClass in PowerShell v3&lt;/p&gt;

&lt;p&gt;Get-CimClass -ClassName StdRegProv | 
  &lt;br /&gt;select -ExpandProperty CimClassMethods | 

  &lt;br /&gt;where Name -eq &amp;quot;SetStringValue&amp;quot; | 

  &lt;br /&gt;select -ExpandProperty Parameters&lt;/p&gt;

&lt;p&gt;produces&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; CimType Qualifiers 
    &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; ------- ---------- 

    &lt;br /&gt;hDefKey&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UInt32 {ID, IN} 

    &lt;br /&gt;sSubKeyName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String {ID, IN} 

    &lt;br /&gt;sValue&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String {ID, in} 

    &lt;br /&gt;sValueName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String {ID, in}&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;if we use Invoke-CimMethod its not to much of a problem as we have to provide the value name and value pairs as a hash table we are not relying on argument order.&lt;/p&gt;

&lt;p&gt;I’ll post an alternative listing using the CIM cmdlets another time&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809954" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Networking/default.aspx">Networking</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V3/default.aspx">PowerShell V3</category></item><item><title>Advanced PowerShell v3 book</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/18/advanced-powershell-v3-book.aspx</link><pubDate>Fri, 18 May 2012 18:06:15 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809948</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=1809948</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/18/advanced-powershell-v3-book.aspx#comments</comments><description>&lt;p&gt;Three new chapters are added to the MEAP – Manning Early Access Program&lt;/p&gt;  &lt;p&gt;Chapter 3 – Using the PowerShell help system – includes PowerShell v3 Updateable help&lt;/p&gt;  &lt;p&gt;Chapter 5 – Working with PSsnapins and Modules&lt;/p&gt;  &lt;p&gt;Chapter 9 – Formatting&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.manning.com/powershellindepth"&gt;www.manning.com/powershellindepth&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809948" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Books/default.aspx">Books</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V3/default.aspx">PowerShell V3</category></item><item><title>1 millionth hit</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/18/1-millionth-hit.aspx</link><pubDate>Fri, 18 May 2012 16:38:05 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809942</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1809942</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/18/1-millionth-hit.aspx#comments</comments><description>&lt;p&gt;This blog had its 1 millionth hit yesterday.&amp;#160; Thank you to everyone who takes the time to read my posts&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809942" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/General/default.aspx">General</category></item><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 19:03:18 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809907</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=1809907</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/17/scripting-games-2012-comments-20-multiple-ifs.aspx#comments</comments><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;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809907" 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/Scripting+Games/default.aspx">Scripting Games</category></item><item><title>TCP/IP Alternative Configuration: pt II Set DHCP</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/16/tcp-ip-alternative-configuration-pt-ii-set-dhcp.aspx</link><pubDate>Wed, 16 May 2012 21:14:38 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809874</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=1809874</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/16/tcp-ip-alternative-configuration-pt-ii-set-dhcp.aspx#comments</comments><description>&lt;p&gt;The next step on our journey to an alternative configuration is setting the NIC to use DHCP&lt;/p&gt;  &lt;p&gt;I will keep cheating for now and specify the NIC – on my machine I now it is the NIC whose Win32_NetworkAdapterConfiguration has an Index of 7&lt;/p&gt;  &lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#ff4500;"&gt;$index&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#800080;"&gt;7&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_NetworkAdapterConfiguration&lt;/span&gt; &lt;span style="color:#000000;"&gt;`
&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Index=$index&amp;quot;&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;EnableDHCP&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;This sets the IP address to be obtained automatically via DHCP BUT it doesn’t set the DNS server to be delivered via DHCP. The old static DNS entries are retained.&lt;/p&gt;

&lt;p&gt;To resolve this we use the SetDNSServerSearchOrder method without any arguments&lt;/p&gt;

&lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#ff4500;"&gt;$index&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#800080;"&gt;7&lt;/span&gt;            
            
&lt;span style="color:#ff4500;"&gt;$nic&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_NetworkAdapterConfiguration&lt;/span&gt; &lt;span style="color:#000000;"&gt;`
&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Index=$index&amp;quot;&lt;/span&gt;             
            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-InputObject&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$nic&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;EnableDHCP&lt;/span&gt;            
&lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-InputObject&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$nic&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;SetDNSServerSearchOrder&lt;/span&gt;            
            &lt;/pre&gt;

&lt;p&gt;I’ve modified the script slightly so we create an object for the WMI class and then use that object as the InputObject on two calls to Invoke-WmiMethod&lt;/p&gt;

&lt;p&gt;We could have just as easily used&lt;/p&gt;

&lt;p&gt;$nic.EnableDHCP()&lt;/p&gt;

&lt;p&gt;$nic.SetDNSServerSearchOrder()&lt;/p&gt;

&lt;p&gt;Now that we have the NIC set to use DHCP we need to configure the Alternative Configuration&lt;/p&gt;

&lt;p&gt;More information on working with network adapters can be found in &lt;em&gt;PowerShell and WMI&lt;/em&gt; – &lt;a href="http://www.manning.com/powershellandwmi"&gt;www.manning.com/powershellandwmi&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809874" 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><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Networking/default.aspx">Networking</category></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 19:48:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809872</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=1809872</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/16/scripting-games-2012-comments-19-default-parameters.aspx#comments</comments><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;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809872" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Scripting+Games/default.aspx">Scripting Games</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+Basics/default.aspx">PowerShell Basics</category></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 21:28:17 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809845</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=1809845</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/15/scripting-games-2012-comments-18-computer-names.aspx#comments</comments><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;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809845" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Scripting+Games/default.aspx">Scripting Games</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+Basics/default.aspx">PowerShell Basics</category></item><item><title>Test-Connection on PowerShell v3</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/15/test-connection-on-powershell-v3.aspx</link><pubDate>Tue, 15 May 2012 17:34:12 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809843</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=1809843</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/15/test-connection-on-powershell-v3.aspx#comments</comments><description>&lt;p&gt;Following on from the previous post I performed the same tests on PowerShell v3&lt;/p&gt;  &lt;p&gt;The behaviour is the same except that &lt;/p&gt;  &lt;p&gt;Test-Connection -ComputerName . -Count 4 –AsJob&lt;/p&gt;  &lt;p&gt;now give the 4 pings when you receive the job information&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809843" 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+V3/default.aspx">PowerShell V3</category></item><item><title>Test-Connection oddities</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/14/test-connection-oddities.aspx</link><pubDate>Mon, 14 May 2012 21:24:29 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809818</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=1809818</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/14/test-connection-oddities.aspx#comments</comments><description>&lt;p&gt;I’ve playing around with Test-Connection because I wanted to set up a long running WMI based job and I thought that pinging a machine lots of times would be a good way to do it. Test-Connection uses the Win32-PingStatus class.&lt;/p&gt;  &lt;p&gt;I started with this&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;PS&amp;gt; Test-Connection -ComputerName . -Count 4&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;Source&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Destination&amp;#160;&amp;#160;&amp;#160;&amp;#160; IPV4Address&amp;#160;&amp;#160; IPV6Address&amp;#160; Bytes&amp;#160;&amp;#160;&amp;#160; Time(ms)      &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;RSLAPTOP01&amp;#160;&amp;#160;&amp;#160; localhost&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 127.0.0.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ::1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 32&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0       &lt;br /&gt;RSLAPTOP01&amp;#160;&amp;#160;&amp;#160; localhost&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 127.0.0.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ::1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 32&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0       &lt;br /&gt;RSLAPTOP01&amp;#160;&amp;#160;&amp;#160; localhost&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 127.0.0.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ::1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 32&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0       &lt;br /&gt;RSLAPTOP01&amp;#160;&amp;#160;&amp;#160; localhost&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 127.0.0.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ::1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 32&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Nothing special there.&lt;/p&gt;  &lt;p&gt;I then tried this&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Test-Connection -ComputerName . -Count 4 -Quiet    &lt;br /&gt;False&lt;/p&gt;  &lt;p&gt;Huh?&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Test-Connection -ComputerName localhost -Count 4 -Quiet    &lt;br /&gt;True&lt;/p&gt;  &lt;p&gt;Odd&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Test-Connection -ComputerName $env:COMPUTERNAME -Count 4 -Quiet    &lt;br /&gt;True&lt;/p&gt;  &lt;p&gt;Very odd – seems like “.” isn’t liked when running –Quiet.&amp;#160; Another good reason to avoid it&lt;/p&gt;  &lt;p&gt;I then tried it as a job&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Test-Connection -ComputerName . -Count 4 -AsJob&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160; Location&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; -------       &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Job3&amp;#160;&amp;#160;&amp;#160;&amp;#160; Running&amp;#160;&amp;#160;&amp;#160; 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; Test-Connection&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;PS&amp;gt; Get-Job&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160; Location&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; -------       &lt;br /&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Job1&amp;#160;&amp;#160;&amp;#160;&amp;#160; Completed&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; Test-Connection       &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Job3&amp;#160;&amp;#160;&amp;#160;&amp;#160; Completed&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; Test-Connection&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;PS&amp;gt; Receive-Job -Id 3&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;Source&amp;#160;&amp;#160; Destination&amp;#160; IPV4Address&amp;#160; IPV6Address&amp;#160; Bytes&amp;#160;&amp;#160;&amp;#160; Time(ms)      &lt;br /&gt;------&amp;#160;&amp;#160; -----------&amp;#160; -----------&amp;#160; -----------&amp;#160; -----&amp;#160;&amp;#160;&amp;#160; --------       &lt;br /&gt;RSLAPTOP01 localhost&amp;#160;&amp;#160;&amp;#160; 127.0.0.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ::1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 32&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;font face="Arial"&gt;Only one ping is returned instead of the 4 I was expecting.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;font face="Arial"&gt;Not major problems but something to remember&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809818" 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>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 17:23:04 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809814</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=1809814</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/14/scripting-games-2012-comments-17-opening-a-csv-file.aspx#comments</comments><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;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809814" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Scripting+Games/default.aspx">Scripting Games</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+Basics/default.aspx">PowerShell Basics</category></item><item><title>Scripting Games 2012 comments: #16 reading environmental variables</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/13/scripting-games-2012-comments-16-reading-environmental-variables.aspx</link><pubDate>Sun, 13 May 2012 17:24:31 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809787</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=1809787</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/13/scripting-games-2012-comments-16-reading-environmental-variables.aspx#comments</comments><description>&lt;p&gt;Windows maintains a set of environmental variables. Some, but not all, can be seen via the env: PowerShell drive&lt;/p&gt;  &lt;p&gt;Get-ChildItem -Path env:&lt;/p&gt;  &lt;p&gt;You can also use WMI to see some of the variables&lt;/p&gt;  &lt;p&gt;Get-WmiObject -Class Win32_Environment | ft Name, VariableValue –a&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now how do you read them in your scripts?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I noticed a lot of people doing this&lt;/p&gt;  &lt;p&gt;$name = (Get-Item env:\Computername).Value&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It works but its a bit long winded.&amp;#160; A better method is this&lt;/p&gt;  &lt;p&gt;$name = $env:COMPUTERNAME&lt;/p&gt;  &lt;p&gt;$env: is the environment provider surfaced as a namespace&lt;/p&gt;  &lt;p&gt;You can also use this technique with other providers e.g.&lt;/p&gt;  &lt;p&gt;PS&amp;gt; $variable:MaximumAliasCount   &lt;br /&gt;4096&lt;/p&gt;  &lt;p&gt;It doesn’t work with all providers e.g. the registry. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809787" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+Basics/default.aspx">PowerShell Basics</category></item><item><title>TCP/IP Alternative Configuration: pt I The configuration</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/13/tcp-ip-alternative-configuration-pt-i-the-configuration.aspx</link><pubDate>Sun, 13 May 2012 16:37:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809786</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=1809786</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/13/tcp-ip-alternative-configuration-pt-i-the-configuration.aspx#comments</comments><description>&lt;p&gt;A question on the forum got me wondering about setting the Alternative Configuration on a TCP/IP properties of a network adapter. NICs are normally configured to either DHCP or a static address. If you use DHCP another tab “Alternative Configuration” appears on the IPv4 properties dialog. This can be set to APIPA (an address in the range 169.254.x.x/16 – ie DHCP failed) or a static address. DHCP will be tried first and if it fails the Alternative Configuration kicks in.&lt;/p&gt;  &lt;p&gt;I had never seen anything on configuring this so started to dig.&lt;/p&gt;  &lt;p&gt;It turns out that the information is held in the registry – big surprise! The data is a little difficult to track down&lt;/p&gt;  &lt;pre class="PowerShellColorizedScript"&gt;&lt;span style="color:#006400;"&gt;## http://technet.microsoft.com/en-us/library/bb457118.aspx&lt;/span&gt;            
&lt;span style="color:#ff4500;"&gt;$index&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#800080;"&gt;7&lt;/span&gt;            
&lt;span style="color:#ff4500;"&gt;$HKLM&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#800080;"&gt;2147483650&lt;/span&gt; &lt;span style="color:#006400;"&gt;#HKEY_LOCAL_MACHINE&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:#ff4500;"&gt;$nic&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_NetworkAdapterConfiguration&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Index=$index&amp;quot;&lt;/span&gt;            
            
&lt;span style="color:#ff4500;"&gt;$key&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\$($nic.SettingID)&amp;quot;&lt;/span&gt;            
            
&lt;span style="color:#ff4500;"&gt;$rc&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegProv&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;EnumValues&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&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;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;ReturnValue&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-eq&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:#ff4500;"&gt;$num&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Types&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;-&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;            
              
  &lt;span style="color:#00008b;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#000000;"&gt;;&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;-le&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$num&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$i&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;switch&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Types&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#800080;"&gt;1&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$value&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegProv&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;GetStringValue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&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;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sNames&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#a9a9a9;"&gt;|&lt;/span&gt;             
           &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ExpandProperty&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;sValue&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&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:#ff4500;"&gt;$value&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegProv&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;GetExpandedStringValue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&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;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sNames&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#a9a9a9;"&gt;|&lt;/span&gt;             
           &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ExpandProperty&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;sValue&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
       &lt;span style="color:#800080;"&gt;3&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$value&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegProv&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;GetBinaryValue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&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;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sNames&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#a9a9a9;"&gt;|&lt;/span&gt;             
           &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ExpandProperty&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;uValue&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
       &lt;span style="color:#800080;"&gt;4&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$value&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegProv&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;GetDWORDValue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&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;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sNames&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#a9a9a9;"&gt;|&lt;/span&gt;             
          &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ExpandProperty&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;uValue&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;            
       &lt;span style="color:#800080;"&gt;7&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$value&lt;/span&gt; &lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Class&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;StdRegProv&lt;/span&gt; &lt;span style="color:#000080;"&gt;-Name&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;GetMultiStringValue&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ArgumentList&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$hklm&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$key&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;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sNames&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#a9a9a9;"&gt;|&lt;/span&gt;             
         &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#000080;"&gt;-ExpandProperty&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;sValue&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-Warning&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;Could not process $($rc.sNames[$i]) - type $($rc.Types[$i])&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;$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:#ff4500;"&gt;$rc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sNames&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&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:#a9a9a9;"&gt;=&lt;/span&gt; &lt;span style="color:#ff4500;"&gt;$value&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 for&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-Error&lt;/span&gt; &lt;span style="color:#8b0000;"&gt;&amp;quot;WMI call to registry provider failed&amp;quot;&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:#000000;"&gt;GetEnumerator&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;sort&lt;/span&gt; &lt;span style="color:#8a2be2;"&gt;key&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;I’ve cheated for now and defined the NIC I’m interested in – Index =7 is my LAN connection.&lt;/p&gt;

&lt;p&gt;I need to work with the HKLM hive so define the appropriate constant.&lt;/p&gt;

&lt;p&gt;After getting the WMI object for the NIC – filter on Index I use the SettingID to define the registry key I need. The settingID looks like this - {01F4E3B7-5F1F-40BD-8252-DCC3331891C1}&lt;/p&gt;

&lt;p&gt;The EnumValues method gives me the registry value names and types for that key. I can loop through them and call the appropriate method to read the registry value.&lt;/p&gt;

&lt;p&gt;The data is output sorted by value name and looks like this&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; Value 
    &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; ----- 

    &lt;br /&gt;AddressType&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&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;DefaultGateway&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&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;DefaultGatewayMetric&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;DhcpConnForceBroadcastFlag&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 

    &lt;br /&gt;DhcpGatewayHardware&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {192, 168, 1, 1...} 

    &lt;br /&gt;DhcpGatewayHardwareCount&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1 

    &lt;br /&gt;DhcpInterfaceOptions&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {6, 0, 0, 0...} 

    &lt;br /&gt;DhcpServer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 255.255.255.255 

    &lt;br /&gt;Domain&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&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;EnableDeadGWDetect&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;EnableDHCP&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&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;IPAddress&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.10.54.202 

    &lt;br /&gt;IsServerNapAware&amp;#160;&amp;#160;&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;Lease&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&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;LeaseObtainedTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1336923004 

    &lt;br /&gt;LeaseTerminatesTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2147483647 

    &lt;br /&gt;NameServer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.10.54.201 

    &lt;br /&gt;RegisterAdapterName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;RegistrationEnabled&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;SubnetMask&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 255.255.255.0 

    &lt;br /&gt;T1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1336923004 

    &lt;br /&gt;T2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1336923004 

    &lt;br /&gt;UseZeroBroadcast&amp;#160;&amp;#160;&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&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;This shows we have a static address – the fact that IPAddress is set and that EnableDHCP=0&lt;/p&gt;

&lt;p&gt;Next time we will look at enabling DHCP and then setting the alternative configuration&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809786" 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/Networking/default.aspx">Networking</category></item><item><title>PowerShell User Group Recodings</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/13/powershell-user-group-recodings.aspx</link><pubDate>Sun, 13 May 2012 12:55:37 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809782</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=1809782</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/13/powershell-user-group-recodings.aspx#comments</comments><description>&lt;p&gt;A number of the recent UK PowerShell group sessions are available as recordings for download.&amp;#160; The slides and demo scripts are usually included in the download package. They can be downloaded from my skydrive under the PowerShell User group folder.    &lt;br /&gt;&lt;a href="https://skydrive.live.com/#cid=43CFA46A74CF3E96&amp;amp;id=43CFA46A74CF3E96%212469"&gt;https://skydrive.live.com/#cid=43CFA46A74CF3E96&amp;amp;id=43CFA46A74CF3E96%212469&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The following sessions are available&lt;/p&gt;  &lt;p&gt;2011 09 PowerShell remoting and end point customisation    &lt;br /&gt;2011 11 Whats new in PowerCLI 5     &lt;br /&gt;2011 12 Intro to WMI     &lt;br /&gt;2011 12 WSMAN_WMI_and_CIM     &lt;br /&gt;2012 January PowerShell v3 CTP 2 overview     &lt;br /&gt;2012 February PowerShell and SQL Server     &lt;br /&gt;2012 March CIM cmdlets     &lt;br /&gt;2012 April Powershell in Windows Server 8&lt;/p&gt;  &lt;p&gt;This list will be updated periodically&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809782" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+User+Group/default.aspx">PowerShell User Group</category></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 19:21:27 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1809632</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=1809632</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2012/05/08/scripting-games-2012-comments-15-pipelines.aspx#comments</comments><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;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809632" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Scripting+Games/default.aspx">Scripting Games</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+Basics/default.aspx">PowerShell Basics</category></item></channel></rss>
