Powershell.exe的路径(v 2.0)

时间:2010-11-10 13:59:41

标签: powershell path

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。

5 个答案:

答案 0 :(得分:143)

我相信它在C:\Windows\System32\WindowsPowershell\v1.0\。为了混淆无辜者,MS将其保存在标有“v1.0”的目录中。在Windows 7上运行并通过$Host.VersionDetermine installed PowerShell version)检查版本号显示它是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 :(得分:43)

我认为$ PsHome有你想要的信息吗?

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

PS .> Get-Help about_automatic_variables

TOPIC
    about_Automatic_Variables ...

答案 2 :(得分:24)

这是一种方式......

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

这可能是一种更好的方法,因为它返回路径上的第一个命中,就像你从命令提示符运行Powershell一样......

(Get-Command powershell.exe).Definition

答案 3 :(得分:11)

始终是C:\ Windows \ System32 \ WindowsPowershell \ v1.0。这样就可以了解后向兼容性是我在某处听到或读过的内容。

答案 4 :(得分:0)

要获取当前运行的 PowerShell 的完整路径,您可以使用:

[System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName

生成的路径包含 PowerShell 可执行文件名,它允许您区分 PowerShell 和 PowerShell ISE(与 $PsHome 不同,后者仅显示 PowerShell 文件夹)。此外,与 Get-Process 不同的是,它不受 系统上运行的其他进程,因此您始终可以获得当前架构(32 位或 64 位)的正确路径。

GetCurrentProcess method 可从 .NET Framework 1.1 和 .NET Core 1.0 获得,因此这应该适用于任何版本的 .NET/PowerShell。