獲取 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.