到 Powershell.exe 的路径(v2.0)

Powershell (版本2.0)位于何处?Powershell.exe 的路径是什么?我已经安装了 WindowsServer2008和 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。

384386 次浏览

我相信是在 C:\Windows\System32\WindowsPowershell\v1.0\。为了混淆视听,微软把它保存在一个名为“ v1.0”的目录中。在 Windows 7上运行并通过 $Host.Version(确定已安装的 PowerShell 版本)检查版本号显示它是2.0。

另一个选项是在命令提示符下键入 $PSVersionTable:

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 Windows PowerShell v1.0
  • 32位版本: C: Windows SysWOW64 Windows PowerShell v1.0

它总是 C: Windows System32 WindowsPowershell v1.0。我在哪里听到或读到过类似的向后兼容性。

有一个办法。

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

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

(Get-Command powershell.exe).Definition

我想 $PsHome 有你想要的信息?

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


PS .> Get-Help about_automatic_variables


TOPIC
about_Automatic_Variables ...


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

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

生成的路径包括 PowerShell 可执行文件名,它允许您区分 PowerShell 和 PowerShell ISE (与 $PsHome 不同,$PsHome 只显示 PowerShell 文件夹)。另外,与 Get-Process 不同,它不受 在系统上运行的其他进程,因此您总能得到当前体系结构(32位或64位)的正确路径。

GetCurrentProcess 方法可从。NET Framework 1.1及。NET Core 1.0,所以这应该可以在任何版本的。NET/PowerShell.