Powershell.exe(v 2.0)的路径


114

Powershell(2.0版)在哪里?通往Powershell.exe的路径是什么?我安装了Windows Server 2008和Powershell。当我查看此文件夹时:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         20.4.2010     17:09            v1.0

我只有Powershell v1.0。但是当我打字

PS C:\> $Host.version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1


PS C:\>

它表明我已经安装了v2.0。


8
您在上面看到的“ v1.0”只是一个目录名,而不是实际的版本号。
doobop

只需查看PowerShell链接的目标位置
oxfn 2013年

Answers:


170

我相信它在C:\Windows\System32\WindowsPowershell\v1.0\。为了混淆无辜者,MS将其保存在标有“ v1.0”的目录中。在Windows 7上运行此程序,并通过$Host.Version确定已安装的PowerShell版本)检查版本号,显示版本为 2.0。

另一个选项是$PSVersionTable在命令提示符下键入。如果运行的是v2.0,则输出为:

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

如果您正在运行1.0版,则该变量不存在,并且将没有输出。

本地化PowerShell版本1.0、2.0、3.0、4.0:

  • 64位版本:C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • 32位版本:C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \

1
也许是他们想保留兼容性的硬编码路径的情况?微软成为微软
Tiago Leite

5
“为了混淆无辜者”将是我最喜欢的名言之一。
simlev

47

我认为$ PsHome具有您所需要的信息吗?

PS。> $ PsHome
C:\ Windows \ System32 \ WindowsPowerShell \ v1.0

PS。>获取帮助about_automatic_variables

话题
    about_Automatic_Variables ...


29

这是一种方法

(Get-Process powershell | select -First 1).Path

这可能是一个更好的方法,因为它会返回路径上的第一个匹配项,就像您从命令提示符处运行Powershell一样...

(Get-Command powershell.exe).Definition

3
就我而言,这是一个比当前投票赞成35票更好的答案。原始问题似乎与可执行文件的路径有关,而版本信息是该问题附带的。这个答案直接解决了这个问题,甚至绕过了“应该是”的答案,让一个人准确地知道了exe在自己系统上的位置,即使该系统与默认系统不同。(这就是我来这里寻找的东西,所以我感激不尽。)
Todd Walton 2014年

基于可执行文件进行搜索powershell.exe有点太宽松了,因为您可以轻松地将另一个可执行文件重命名为powershell.exe,并让它负责该过程。Get-Process -Id $PID会的工作,虽然我不知道是什么版本$PID在推出。
查尔斯·格伦沃尔德

我看到您的“太放松了”的观点,但是,使用$ PID将返回当前主机,该主机可能不是Powershell解释器。例如,类似于Powershell_ise.exe。
内森·哈特利

也许自2011年11月以来属性已发生变化。对于我(在2016年7月,使用Windows Server 2012)不存在.Source属性,而是可以使用.Definition属性,该属性返回:“ C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe” 。我的$ PSHome变量包含:“ C:\ Windows \ System32 \ WindowsPowerShell \ v1.0”另外,如果您使用get-process,请考虑使用'powershell *'而不是仅使用powershell,以防您使用powershell_ise。HTH
Marcelo Finki '16

将答案从使用.Source更改为.Definition。
内森·哈特利

12

始终为C:\ Windows \ System32 \ WindowsPowershell \ v1.0。之所以这样,是因为我在某处听到或阅读了向后兼容性。


2
%SystemRoot%\ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe。如果SystemRoot不是“ C:\ Windows”
Matthew
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.