4 Answers
4

I believe it's in C:\Windows\System32\WindowsPowershell\v1.0\. In order to confuse the innocent, MS kept it in a directory labeled "v1.0". Running this on windows 7 and checking the version number via $Host.Version (Determine installed PowerShell version) shows it's 2.0.

Another option is type $PSVersionTable at the command prompt. If you are running v2.0, the output will be:

As far as I'm concerned, this is a better answer than the one currently voted up to 35. The original question seemed to be about the path to the executable, with version information being incidental to the question. This answer directly addresses that question, bypassing even the "supposed to be" answer and letting a person find out exactly where the exe is on their own system, even if that system differs from default. (This is what I came here looking for, so I appreciate it.)
– Todd WaltonFeb 5 '14 at 19:06

Searching based on the executable being powershell.exe is a little too relaxed, since you could easily rename another executable to powershell.exe, and have it pick up that process instead. Get-Process -Id $PID would work, though I'm not sure what version $PID was introduced in.
– Charles GrunwaldMay 19 '16 at 20:35

I see your "too relaxed" point, however, using the $PID will return the current host, which may not be a Powershell interpreter. Like Powershell_ise.exe, for instance.
– Nathan HartleyMay 31 '16 at 19:00

maybe since November 2011 properties have changed. For me (in July 2016, using Windows Server 2012) the property .Source does not exist, Instead, I can use the property .Definition which returns: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe". My $PSHome variable contains: "C:\Windows\System32\WindowsPowerShell\v1.0" Also, if you use get-process, consider using 'powershell*' instead of just powershell, in case you are using powershell_ise. HTH
– Marcelo FinkiJul 4 '16 at 14:32