<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://powershell.com/cs/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>Dreaming in PowerShell : V2, Version, Download</title><link>http://powershell.com/cs/blogs/tobias/archive/tags/V2/Version/Download/default.aspx</link><description>Tags: V2, Version, Download</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 (Build: 30929.2835)</generator><item><title>Are you using the correct PowerShell version?</title><link>http://powershell.com/cs/blogs/tobias/archive/2010/01/21/are-you-using-the-correct-powershell-version.aspx</link><pubDate>Wed, 20 Jan 2010 23:50:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:4590</guid><dc:creator>Tobias</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://powershell.com/cs/blogs/tobias/rsscomments.aspx?PostID=4590</wfw:commentRss><comments>http://powershell.com/cs/blogs/tobias/archive/2010/01/21/are-you-using-the-correct-powershell-version.aspx#comments</comments><description>&lt;p&gt;Recently, when I was training a group of enterprise admins, a question came up: Why is PowerShell remoting not working on Windows XP? Well, it does! As it turned out, they had downloaded the &amp;quot;wrong&amp;quot; PowerShell version. How come?&lt;/p&gt;
&lt;p&gt;When you search for &lt;strong&gt;PowerShell V2&lt;/strong&gt; downloads, you will find tons of articles and download links. Only some of them point to the correct final &amp;quot;&lt;strong&gt;RTM&lt;/strong&gt;&amp;quot; link. A lot of people are still blogging about &amp;quot;&lt;strong&gt;CTP&lt;/strong&gt;&amp;quot; versions which really were beta versions with limited functionality. Even worse, it turned out that these out-dated PowerShell versions are still up for download from the Microsoft Download center, so when you follow the &amp;quot;wrong&amp;quot; link, you could get the impression that these CTP versions really were official and up-to-date releases.&lt;/p&gt;
&lt;p&gt;This was brought up&amp;nbsp;in our PowerShell &lt;a target="_blank" href="https://mvp.support.microsoft.com/communities/mvp.aspx?product=1&amp;amp;competency=PowerShell"&gt;MVP&lt;/a&gt; chat, and as a consequence, we are trying to get the old out-dated downloads offline. At the same time, we were tossing together ideas that help you identify which version you already have and whether it is the correct one. The results of this joined &lt;a target="_blank" href="https://mvp.support.microsoft.com/communities/mvp.aspx?product=1&amp;amp;competency=PowerShell"&gt;MVP&lt;/a&gt; effort I would like to share with you today.&lt;/p&gt;
&lt;h2&gt;PowerShell Versions - Watch Out!&lt;/h2&gt;
&lt;p&gt;Basically, there are two kinds of PowerShell: &lt;strong&gt;PowerShell V1&lt;/strong&gt; which dates back to 2006, and &lt;strong&gt;PowerShell V2&lt;/strong&gt; which was released in Oct 09. &lt;strong&gt;PowerShell V2&lt;/strong&gt; is downwards compatible to V1 so all of your V1 stuff still runs, but in addition, V2 has tons of important new features such as &lt;strong&gt;Remoting&lt;/strong&gt; (executing code on other machines), &lt;strong&gt;Modules&lt;/strong&gt; (the &amp;quot;new&amp;quot; Snapins to load more commands), &lt;strong&gt;background jobs&lt;/strong&gt; (executing code in a separate thread asynchronously) and more. So it is an excellent idea to upgrade to V2. Both versions are supported on Windows XP and up. They do not run side-by-side, so you have to install V2 over V1.&lt;/p&gt;
&lt;p&gt;One very easy way of distinguishing both versions is to look for a PowerShell variable called &lt;strong&gt;$psversiontable&lt;/strong&gt;. If it is undefined, then you are running V1. If it is there, you have V2. From outside PowerShell, you can also look at a registry key to differentiate between V1 and V2: &lt;em&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Note that PowerShell often was installed as update package so you do not find it in the list of installed software. You have to look at the update packages. Fortunately, though, the final PowerShell V2 can be installed over V1 without having to uninstall V1 first. Only the outdated CTP versions make you find and manually uninstall V1 first. So if you are trying to install V2 on your machine, and it complains about an existing V1, you may well be using the wrong installation package.&lt;/p&gt;
&lt;p&gt;Beginning with Windows 7 / Server 2008 R2, you are on the safe side anyway because these OS are the first to ship with PowerShell included, and they always ship with the final version.&lt;/p&gt;
&lt;h2&gt;CTP PowerShell V2 is WRONG!&lt;/h2&gt;
&lt;p&gt;The PowerShell team has prereleased V2 a long time before the final version was done and called these preview versions &amp;quot;CTP&amp;quot; (Community Technology Preview). You can still find links to &lt;strong&gt;CTP1&lt;/strong&gt;, &lt;strong&gt;CTP2&lt;/strong&gt; and &lt;strong&gt;CTP3&lt;/strong&gt;. All of these versions are outdated and should no longer be used unless some other beta software on your machine really requires it. One reason why you &lt;strong&gt;should not use CTPs anymore&lt;/strong&gt; is because they are lacking some functionality such as Remoting on Windows XP. Other reasons are that CTP versions are unsupported, still had some bugs and also some naming changes were made, so scripts created on CTP1 might not run on the final version of PS V2 anymore.&lt;/p&gt;
&lt;p&gt;Unfortunately, it is not a trivial task to identify whether you have the final PowerShell V2 or some of the preview versions because - CTP&amp;nbsp;versions have a &lt;strong&gt;$psversiontable&lt;/strong&gt; variable, and the versions reported by it can differ from OS to OS and CTP to CTP. So if you do get back a result from &lt;strong&gt;$psversiontable&lt;/strong&gt;, make sure the BuildVersion is &lt;strong&gt;equals or greater than &lt;/strong&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:DE;mso-fareast-language:DE;mso-bidi-language:AR-SA;"&gt;&lt;strong&gt;6.0.6002.18111&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:DE;mso-fareast-language:DE;mso-bidi-language:AR-SA;"&gt;If you want to check your local PowerShell version, you could wrap that logic into a function like this:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:DE;mso-fareast-language:DE;mso-bidi-language:AR-SA;"&gt;
&lt;div class="pscode"&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt;&lt;/span&gt; &lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;Test-PowerShellVersion&lt;/span&gt;&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;Test-Path&lt;/span&gt;&lt;/span&gt; variable:psversiontable) {&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionPresent&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$psversiontable&lt;/span&gt;&lt;/span&gt;.&lt;span style="color:#8b4513;"&gt;&lt;span class="method"&gt;buildversion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;/div&gt;
&lt;div class="pscode"&gt;(&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionPresent&lt;/span&gt;&lt;/span&gt;.&lt;span class="method"&gt;&lt;span style="color:#8b4513;"&gt;Major&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;-ge&lt;/span&gt;&lt;/span&gt; 6) &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;-and&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div class="pscode"&gt;(&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionPresent&lt;/span&gt;&lt;/span&gt;.&lt;span class="method"&gt;&lt;span style="color:#8b4513;"&gt;Build&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;-ge&lt;/span&gt;&lt;/span&gt; 6002) &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;-and&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div class="pscode"&gt;(&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionPresent&lt;/span&gt;&lt;/span&gt;.&lt;span class="method"&gt;&lt;span style="color:#8b4513;"&gt;Revision&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;-ge&lt;/span&gt;&lt;/span&gt; 18111)&lt;/div&gt;
&lt;div class="pscode"&gt;) {&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;V2 RTM&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;} &lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt; { &lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;V2 CTP Prerelease - Update to V2 RTM!&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;} &lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt; {&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;V1 - Update to V2 RTM!&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;}&lt;/div&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It tells you exactly&amp;nbsp;whether&amp;nbsp;you have the final V2 or some&amp;nbsp;outdated prerelease installation. Thanks &lt;a target="_blank" href="https://mvp.support.microsoft.com/profile=007E4838-11E1-4077-9261-542921D8E5A1"&gt;Max&lt;/a&gt; for investigating the version numbers and &lt;a target="_blank" href="https://mvp.support.microsoft.com/profile=EEDF79D9-9D71-4AC0-A225-4E8C09FF03A1"&gt;Shay&lt;/a&gt; for tossing in version checking!&lt;/p&gt;
&lt;h2&gt;Wait a minute - How can I check my enterprise?&lt;/h2&gt;
&lt;p&gt;Of course, the quick solution I just presented will not help when you need to investigate your entire network. It also helps only when you examine PowerShell from within. What if you have no access to the &lt;strong&gt;$psversiontable&lt;/strong&gt; variale because you are not checking from within a PowerShell script?&lt;/p&gt;
&lt;p&gt;As it turns out, the BuildVersion reported by &lt;strong&gt;$psversiontable&lt;/strong&gt; really is the version found in the PowerShell assembly. You could get to it from other programming languages by instantiating a PS object and then looking at the version. This is the route to take for anyone wanting to create an inventory solution based on VB.NET or C#. Here is a PowerShell line that illustrates how to get to the version (thanks &lt;a target="_blank" href="https://mvp.support.microsoft.com/profile=970A6A95-C9F6-40C1-A2CC-03627CC06217"&gt;Oisin&lt;/a&gt;!):&lt;/p&gt;
&lt;div class="pscode"&gt;([&lt;span class="optional"&gt;&lt;span style="color:#0000ff;"&gt;psobject&lt;/span&gt;&lt;/span&gt;].&lt;span class="namespace"&gt;&lt;span style="color:#8b4513;"&gt;assembly.getcustomattributes&lt;/span&gt;&lt;/span&gt;(&lt;/div&gt;
&lt;div class="pscode"&gt;[&lt;span class="namespace"&gt;&lt;span style="color:#8b4513;"&gt;reflection.assemblyfileversionattribute&lt;/span&gt;&lt;/span&gt;], &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$false&lt;/span&gt;&lt;/span&gt;)&lt;/div&gt;
&lt;div class="pscode"&gt;)[0].&lt;span class="method"&gt;&lt;span style="color:#8b4513;"&gt;version&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;If you just wanted to check computers in your network, you can use a PowerShell script. Since PowerShell V2 Remoting is not available on downlevel installations, in order to get the file version remotely, use WMI. The following script &lt;strong&gt;Test-PSVersion&lt;/strong&gt; represents all I thought was useful and consists of a lot of individual contributions made in our MVP list. So it is by no means my function or accomplishment alone but instead &lt;em&gt;the result of a joined team effort in our MVP group&lt;/em&gt;. Special thanks go to &lt;a target="_blank" href="https://mvp.support.microsoft.com/profile=E7D2009B-B8C3-40C9-8DED-5EE212275B71"&gt;Alexander&lt;/a&gt; for bringing up the WMI queries and &lt;a target="_blank" href="http://tinyurl.com/Poshoholic"&gt;Kirk&lt;/a&gt; for perfecting the parameter decoration and reading the OS info via WMI. There were many other MVPs involved. So forgive me if I do not credit everyone.&lt;/p&gt;
&lt;p&gt;Should you find errors in this script, they are &lt;em&gt;my fault alone&lt;/em&gt; (as I was putting together this &lt;em&gt;specific&lt;/em&gt; script ;-) ). In this case, I kindly ask you to leave a comment below. You can &lt;a target="_blank" href="http://powershell.com/cs/media/p/4591.aspx"&gt;download the function&lt;/a&gt; here: &lt;a href="http://powershell.com/cs/media/p/4591.aspx"&gt;http://powershell.com/cs/media/p/4591.aspx&lt;/a&gt;&lt;/p&gt;
&lt;div class="pscode"&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt;&lt;/span&gt; &lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;Test-PSVersion&lt;/span&gt;&lt;/span&gt; {&lt;br /&gt;[CmdletBinding()]&lt;br /&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;param&lt;/span&gt;&lt;/span&gt;(&lt;br /&gt;[parameter(Position&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;0,ValueFromPipeline&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$true&lt;/span&gt;&lt;/span&gt;)]&lt;br /&gt;[ValidateNotNullOrEmpty()]&lt;br /&gt;[&lt;span class="datatype"&gt;&lt;span style="color:#0000ff;"&gt;String&lt;/span&gt;&lt;/span&gt;[]]&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$ComputerName&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; @(&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;/span&gt;),&lt;br /&gt;&lt;br /&gt;[Parameter()]&lt;br /&gt;[ValidateNotNull()]&lt;br /&gt;[&lt;span class="namespace"&gt;&lt;span style="color:#8b4513;"&gt;System.Management.Automation.Credential&lt;/span&gt;&lt;/span&gt;()]&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$Credential&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; [&lt;span class="namespace"&gt;&lt;span style="color:#8b4513;"&gt;System.Management.Automation.PSCredential&lt;/span&gt;&lt;/span&gt;]::&lt;span style="color:#8b4513;"&gt;&lt;span class="method"&gt;Empty&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;)&lt;br /&gt;process {&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;Test-Connection&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-ComputerName&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$computername&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Count&lt;/span&gt;&lt;/span&gt; 1 &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-ErrorAction&lt;/span&gt;&lt;/span&gt; SilentlyContinue) {&lt;br /&gt;try {&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$OS&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;Get-WmiObject&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Namespace&lt;/span&gt;&lt;/span&gt; root\CIMV2 &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Class&lt;/span&gt;&lt;/span&gt; Win32_OperatingSystem `&lt;br /&gt;&lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-ComputerName&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$computername&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Credential&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$credential&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-ErrorAction&lt;/span&gt;&lt;/span&gt; SilentlyContinue&lt;br /&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$OS&lt;/span&gt;&lt;/span&gt;) {&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$path&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;$($OS.SystemDirectory -replace &amp;#39;\\&amp;#39;,&amp;#39;\\&amp;#39;)\\WindowsPowerShell\\v1.0\\powershell.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$OSName&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$OS&lt;/span&gt;&lt;/span&gt;.&lt;span class="namespace"&gt;&lt;span style="color:#8b4513;"&gt;Name.Split&lt;/span&gt;&lt;/span&gt;(&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;|&amp;#39;&lt;/span&gt;&lt;/span&gt;)[0]&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$query&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;SELECT Version FROM CIM_DataFile WHERE Name = &amp;#39;$path&amp;#39;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$PSEXE&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;Get-WmiObject&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Query&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$query&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-ComputerName&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$computername&lt;/span&gt;&lt;/span&gt; &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Credential&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800080;"&gt;&lt;span class="var"&gt;$credential&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$PSEXE&lt;/span&gt;&lt;/span&gt;.&lt;span class="method"&gt;&lt;span style="color:#8b4513;"&gt;Version&lt;/span&gt;&lt;/span&gt;) {&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$buildversion&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$PSEXE&lt;/span&gt;&lt;/span&gt;.&lt;span class="namespace"&gt;&lt;span style="color:#8b4513;"&gt;Version.Split&lt;/span&gt;&lt;/span&gt;()[0]&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionPresent&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; [&lt;span class="optional"&gt;&lt;span style="color:#0000ff;"&gt;version&lt;/span&gt;&lt;/span&gt;]&lt;span style="color:#800080;"&gt;&lt;span class="var"&gt;$buildversion&lt;/span&gt;&lt;br /&gt;&lt;span class="var"&gt;$versionRequired&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; [&lt;span class="optional"&gt;&lt;span style="color:#0000ff;"&gt;version&lt;/span&gt;&lt;/span&gt;]&lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;#39;6.0.6002.18111&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionPresent&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;-ge&lt;/span&gt;&lt;/span&gt; &lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionRequired&lt;/span&gt;&lt;/span&gt;) {&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$psversion&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;V2 RTM&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;} &lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;elseif&lt;/span&gt;&lt;/span&gt; (&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$versionPresent&lt;/span&gt;&lt;/span&gt;.&lt;span class="method"&gt;&lt;span style="color:#8b4513;"&gt;Major&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;-ge&lt;/span&gt;&lt;/span&gt; 6) {&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$psversion&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;V2 CTP Prerelease - Update to V2 RTM!&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;} &lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt; {&lt;br /&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$psversion&lt;/span&gt;&lt;/span&gt; &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;quot;V1&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;New-Object&lt;/span&gt;&lt;/span&gt; PSObject &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Property&lt;/span&gt;&lt;/span&gt; @{&lt;br /&gt;ComputerName&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$OS&lt;/span&gt;&lt;/span&gt;.__SERVER;&lt;br /&gt;BuildVersion&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;[&lt;span class="optional"&gt;&lt;span style="color:#0000ff;"&gt;version&lt;/span&gt;&lt;/span&gt;]&lt;span style="color:#800080;"&gt;&lt;span class="var"&gt;$buildversion&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Version&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$psversion&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Status&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$true&lt;/span&gt;&lt;/span&gt;;Description&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;OK&amp;#39;&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;OSName &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800080;"&gt;&lt;span class="var"&gt;$OSName&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;} &lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt; {&lt;br /&gt;&lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;New-Object&lt;/span&gt;&lt;/span&gt; PSObject &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Property&lt;/span&gt;&lt;/span&gt; @{&lt;br /&gt;ComputerName&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$computername&lt;/span&gt;&lt;/span&gt;[0];&lt;br /&gt;BuildVersion&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;[&lt;span class="optional"&gt;&lt;span style="color:#0000ff;"&gt;version&lt;/span&gt;&lt;/span&gt;]&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$null&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Version&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;n/a&amp;#39;&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Status&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$false&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Description&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;Unable to access OS information via WMI.&amp;#39;&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;OSName &lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;#39;n/a&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;} &lt;br /&gt;catch {&lt;br /&gt;&lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;New-Object&lt;/span&gt;&lt;/span&gt; PSObject &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Property&lt;/span&gt;&lt;/span&gt; @{&lt;br /&gt;ComputerName&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$computername&lt;/span&gt;&lt;/span&gt;[0];&lt;br /&gt;BuildVersion&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;[&lt;span class="optional"&gt;&lt;span style="color:#0000ff;"&gt;version&lt;/span&gt;&lt;/span&gt;]&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$null&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Version&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;n/a&amp;#39;&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Status&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$false&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Description&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;.&lt;span class="namespace"&gt;&lt;span style="color:#8b4513;"&gt;Exception.Message&lt;/span&gt;&lt;/span&gt;);&lt;br /&gt;OSName&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;#39;n/a&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="keyword"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt; {&lt;br /&gt;&lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;New-Object&lt;/span&gt;&lt;/span&gt; PSObject &lt;span class="modifier"&gt;&lt;span style="color:#5f9ea0;"&gt;-Property&lt;/span&gt;&lt;/span&gt; @{&lt;br /&gt;ComputerName&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$computername&lt;/span&gt;&lt;/span&gt;[0];&lt;br /&gt;BuildVersion&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;[&lt;span class="optional"&gt;&lt;span style="color:#0000ff;"&gt;version&lt;/span&gt;&lt;/span&gt;]&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$null&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Version&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;n/a&amp;#39;&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Status&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="var"&gt;&lt;span style="color:#800080;"&gt;$false&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;Description&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;#39;Computer did not respond to ping, skipped.&amp;#39;&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;OSName&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span class="string"&gt;&amp;#39;n/a&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;quot;pc77&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="string"&gt;&lt;span style="color:#800000;"&gt;&amp;quot;storage1&amp;quot;&lt;/span&gt;&lt;/span&gt; | &lt;br /&gt;&lt;span class="verbnoun"&gt;&lt;span style="color:#5f9ea0;"&gt;Test-PSVersion&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;You can call this script over the pipeline and pipe a list of computers into it, or you can call &lt;strong&gt;Get-Content&lt;/strong&gt; and read in the content of a list of computernames and pipe the result to &lt;strong&gt;Test-PSVersion&lt;/strong&gt;. What you should get in return should look similar to this:&lt;/p&gt;
&lt;div class="pscode"&gt;
&lt;div class="pscode"&gt;Version : V2 RTM&lt;br /&gt;OSName : Microsoft Windows 7 Ultimate&lt;br /&gt;Status : True&lt;br /&gt;ComputerName : DEMO5&lt;br /&gt;Description : OK&lt;br /&gt;BuildVersion : 6.1.7600.16385&lt;br /&gt;&lt;br /&gt;Version : n&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;/&lt;/span&gt;&lt;/span&gt;a&lt;br /&gt;OSName : n&lt;span class="op"&gt;&lt;span style="color:#ff0000;"&gt;/&lt;/span&gt;&lt;/span&gt;a&lt;br /&gt;Status : False&lt;br /&gt;ComputerName : pc77&lt;br /&gt;Description : Computer did not respond to ping, skipped.&lt;br /&gt;BuildVersion :&lt;br /&gt;&lt;br /&gt;Version : V2 RTM&lt;br /&gt;OSName : Microsoft Windows 7 Ultimate&lt;br /&gt;Status : True&lt;br /&gt;ComputerName : DEMO5&lt;br /&gt;Description : OK&lt;br /&gt;BuildVersion : 6.1.7600.16385&lt;br /&gt;&lt;br /&gt;Version : V2 RTM&lt;br /&gt;OSName : Microsoft Windows Server 2003 for Small Business Server&lt;br /&gt;Status : True&lt;br /&gt;ComputerName : STORAGE1&lt;br /&gt;Description : OK&lt;br /&gt;BuildVersion : 6.0.6002.18139&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It is time to check your PowerShell version! Make sure you are not using any prerelease software (unless you need to for obscure reasons). And if you find yourself using PS V1, consider an upgrade. It is free and worth it! &lt;/p&gt;
&lt;p&gt;I hope on behalf of all of us PowerShell MVPs, with the code and examples in this post, we provided you with the inventory tools you need to make this happen. To get your hands on PowerSjell V2 RTM, there are (too) many dowload pages. To &lt;a target="_blank" href="http://support.microsoft.com/kb/968929"&gt;download PowerShell V2&lt;/a&gt; and learn all about prerequisites etc. I found this link up-to-date and useful: &lt;a href="http://support.microsoft.com/kb/968929"&gt;http://support.microsoft.com/kb/968929&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have fun! Hey, and watch out for &lt;a target="_blank" href="http://www.idera.com/Products/PowerShell/PowerShell-Plus/?s=PS.com-banner"&gt;PowerShellPlus 3.1! Did you try the beta yet&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;And one more thing: if you happen to be located in &lt;strong&gt;Germany&lt;/strong&gt;, &lt;strong&gt;Switzerland&lt;/strong&gt; or &lt;strong&gt;Austria&lt;/strong&gt;, rent me! &lt;/p&gt;
&lt;p&gt;I am doing inhouse trainings, tutorials and projects. Simply drop a mail to &lt;a href="mailto:tobias@powershell.com"&gt;tobias@powershell.com&lt;/a&gt;, and maybe we meet in&amp;nbsp;person some time soon...! I have tons of tricks for you and do trainings for midsize and large enterprises on a regular basis - it&amp;#39;s always a lot of fun!&lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;p&gt;Tobias&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://powershell.com/cs/aggbug.aspx?PostID=4590" width="1" height="1"&gt;</description><category domain="http://powershell.com/cs/blogs/tobias/archive/tags/V2/default.aspx">V2</category><category domain="http://powershell.com/cs/blogs/tobias/archive/tags/_2400_psversiontable/default.aspx">$psversiontable</category><category domain="http://powershell.com/cs/blogs/tobias/archive/tags/Version/default.aspx">Version</category><category domain="http://powershell.com/cs/blogs/tobias/archive/tags/PowerShell/default.aspx">PowerShell</category><category domain="http://powershell.com/cs/blogs/tobias/archive/tags/Download/default.aspx">Download</category><category domain="http://powershell.com/cs/blogs/tobias/archive/tags/CTP/default.aspx">CTP</category></item></channel></rss>