Is Windows PowerShell 2.0 installed by default on Windows 7?

8

1

http://msdn.microsoft.com/en-us/library/ff637750.aspx claims

Windows PowerShell 2.0 needs to be installed on Windows Server 2008 and Windows Vista only. It is already installed on Windows Server 2008 R2 and Windows 7.

However, powershell.exe lives here %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe. That doesn't seem like it would be PowerShell 2.0. The file version of powershell.exe is 6.1.7600.16385 so that doesn't help much either.

How do I know for sure if I have Window PowerShell 2.0 installed and if I don't, where is a download link for Windows 7?

kenwarner

Posted 2011-05-06T14:35:20.147

Reputation: 1 987

Answers

10

You don't need to dig it out of the registry keys. Just run get-host and check the version.

mjolinor

Posted 2011-05-06T14:35:20.147

Reputation:

Or use the $Host automatic variable. It's marked as implementation-specific in the specification, though (then again, Get-Host doesn't appear at all in the spec). – Joey – 2011-05-06T17:45:07.487

Get-Host doesn't appear at all in the spec -> That's weird. They just released that spec a couple of weeks ago. Wonder if that was an oversight? – None – 2011-05-06T19:09:08.243

Well, maybe it's not considered part of the core language cmdlets. $Host is also only implementation-defined. The specification apparently only covers the PowerShell language, not the API and host model. – Joey – 2011-05-06T19:25:45.597

It doesn't cover the PSProviders either, but there's a get- for those. – None – 2011-05-06T20:14:39.243

12

You can also use $PSVersionTable

PS > $PSVersionTable

Name                           Value
----                           -----
PSVersion                      2.0
PSCompatibleVersions           {1.0, 2.0}
BuildVersion                   6.1.7600.16385
PSRemotingProtocolVersion      2.1
WSManStackVersion              2.0
CLRVersion                     4.0.30319.225
SerializationVersion           1.1.0.1

This var exists only in PowerShell V2.0 and gives th CLR version you use. Normal result is:

PS > $PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4959
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

JPBlanc

Posted 2011-05-06T14:35:20.147

Reputation: 220

4

The location of the PowerShell executable and supporting files wasn't changed for V2, nor was the .ps1 script extension because V2 is fully backward compatible—it replaces V1 rather than needing some side by side mechanism.

Richard

Posted 2011-05-06T14:35:20.147

Reputation: 8 152

0

Figured it out

http://blogs.msdn.com/b/powershell/archive/2009/06/25/detection-logic-poweshell-installation.aspx

To check whether version 1.0 or 2.0 of PowerShell is installed, check for the following value in the registry:
Key Location: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
Value Name: PowerShellVersion
Value Type: REG_SZ
Value Data: <1.0 | 2.0>

kenwarner

Posted 2011-05-06T14:35:20.147

Reputation: 1 987

powershell v2 is in the v1.0 directory on win7/2008r2. You couldn't install v1 of powershell on those platforms even if you wanted to. They are system components. IF you are on w7 or r2, you can assume you have v2 or higher powershell. – x0n – 2011-05-06T15:04:16.907