获取 PowerShell 版本
-
使用
$PSVersionTable.PSVersion
属性获取 PowerShell 版本 -
使用
(Get-Host).Version
属性获取 PowerShell 版本 -
使用
$host.Version
属性获取 PowerShell 版本 - 使用注册表获取 PowerShell 版本
PowerShell 是一种更复杂的命令提示符。它带有大量准备好的 cmdlet 以及在各种场景中利用 .NET 框架/C# 的能力。PowerShell ISE 是一个图形用户界面,用于在 Windows 上调试和编辑脚本。在 PowerShell 中,同样的事情可以通过多种方式完成。因此,主要有四种方法可以获取 PowerShell 的版本,下面给出它们。
使用 $PSVersionTable.PSVersion
属性获取 PowerShell 版本
所以我们要研究的第一个方法是自动变量 $PSVersionTable
中的 PSVersion 属性。在这里,它代表 PowerShell 引擎。
PS52> $PSVersionTable.PSVersion
输出:
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 1320
$PSVersionTable
是一个只读哈希表,提供有关 PoweShell 引擎版本和 PSEdition 的信息。此参数可以是 Desktop 或 Core,它将为你提供有关你正在使用的 PowerShell 版本的其他信息。
自动变量 $PSVersionTable
在本地和远程一样准确。我在下面的示例中包含 $PSVersionTable。脚本块内的 PSVersion 并在远程计算机上运行它会返回相同的版本。
PS> Invoke-Command -ComputerName 11.0.0.3 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred
输出:
使用 (Get-Host).Version
属性获取 PowerShell 版本
PowerShell 中使用了主机的概念。导致问题的不是 PowerShell 引擎。PowerShell 主机是带有内置终端的 PowerShell 代码编辑器/控制台。主机可以拥有完全独立的 PowerShell 版本。
当使用 (Get-Host).Version
时,它会输出类似于 PowerShell 版本的版本号。
PS52> (Get-Host).Version
输出:
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 1320
但是,内置终端中的 Get-Host 版本并不总是相同的。尽管主机通常代表相同版本的 PowerShell 引擎,但情况并非总是如此。在本地计算机上调用 Get-Host 时,它总是返回相同的版本,但从不在远程系统上。
因此,对所有事情都使用 Get-Host 是一个糟糕的主意。
使用 $host.Version
属性获取 PowerShell 版本
.$host.Version
是另一种获取 PowerShell 引擎版本的方法。Get-Host
提供与 $host 变量相同的结果,一个完全自动化的变量。
PS52> $host.Version
输出:
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 1320
这与 Get-host
方法非常相似。
使用注册表获取 PowerShell 版本
仅当你不热衷于启动 PowerShell 时,你也可以检查注册表。PowerShell 的版本存储在注册表的键值路径中,如下 HKLM:\SOFTWARE\Microsoft\PowerShell\3\
并且也是一个值。Get-ItemProperty
可用于引用此注册表项中的 PowerShellVersion 值。
PS51> (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion
输出:
5.1.19041.1
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.