如何在 PowerShell 中獲取 Windows 版本

  1. 使用 PowerShell 中的 [System.Environment] 類別來獲取 Windows 版本
  2. 使用 PowerShell 中的 Get-ComputerInfo Cmdlet 獲取 Windows 版本
  3. 使用 PowerShell 中的 Get-WMIObject Cmdlet 搭配 WMI 類來獲取 Windows 版本
  4. 使用 systeminfo 傳統命令 PowerShell 獲取 Windows 版本
  5. 使用 Get-CimInstance 傳統命令 PowerShell 獲取 Windows 版本
  6. 結論
如何在 PowerShell 中獲取 Windows 版本

快速得知您的電腦擁有哪個 Windows 作業系統的方法是使用 winver 命令。在 Windows PowerShell 中,有多種方法可以獲得您的 Windows 版作業系統,本文將在此討論這些方法。

存在多種方法來達成此目的,每種方法都有其優勢和使用案例。本文將探索五種不同的方法來獲取 PowerShell 中的 Windows 版本。

每種方法都提供有關 Windows 環境的獨特見解,為管理員和腳本編寫者提供多功能工具以收集重要系統資訊。

使用 PowerShell 中的 [System.Environment] 類別來獲取 Windows 版本

在 PowerShell 中,您可以使用 [Environment]::OSVersion.Version 方法來檢索有關 Windows 版本的詳細資訊。此方法存取 Environment 類別中 OSVersion 屬性的靜態 Version 屬性,提供了一種直接訪問作業系統版本的方法。

範例代碼:

[System.Environment]::OSVersion.Version

當我們使用 [Environment]::OSVersion.Version 時,我們在訪問 Environment 類別的 OSVersion 屬性,該屬性提供有關作業系統環境的信息。具體而言,我們正在檢索此對象的 Version 屬性,該屬性包含有關 Windows 版本的詳細資訊。

此方法返回一個 System.Version 對象,該對象表示作業系統的版本,由主要和次要版本號的組合組成。通過訪問此對象的 MajorMinor 屬性,我們可以提取這些版本號,並在 PowerShell 腳本中根據需要使用它們。

輸出:

在 PowerShell 中查找 Windows 版本 - 輸出 1

我們可以參考官方微軟文檔以交叉檢查您當前運行的 Windows 版本作業系統。

然而,如果您使用的是最新的作業系統,如 Windows 11 或 Windows Server 2019,則它不會顯示正確的版本,因為它仍會顯示主要版本 10,這表示 Windows 10 和 Windows Server 2016。因此,上述命令僅會在您運行 Windows 10 和 Windows Server 2016 及以下版本時顯示正確的值。

使用 PowerShell 中的 Get-ComputerInfo Cmdlet 獲取 Windows 版本

在 PowerShell 中,您可以輕鬆地使用 Get-ComputerInfo cmdlet 檢索有關 Windows 作業系統的詳細資訊。此 cmdlet 收集有關本地計算機系統的信息,包括作業系統名稱、版本和硬體抽象層 (HAL)。

範例代碼:

Get-ComputerInfo | Select-Object OSName, OSVersion, OsHardwareAbstractionLayer

當我們使用 Get-ComputerInfo cmdlet 並將其管道至 Select-Object 時,我們正在檢索有關本地計算機系統的綜合信息。通過指定屬性 OSNameOSVersionOsHardwareAbstractionLayer,我們正在選擇有關作業系統的具體細節,例如其名稱、版本和硬體抽象層 (HAL)。

此方法使我們能夠收集有關 Windows 環境的詳細資訊,這對於各種管理任務、故障排除或腳本編寫目的非常有用。通過訪問和顯示這些屬性,我們獲得了有關 Windows 系統的配置和規格的見解,有助於系統管理和維護。

輸出:

在 PowerShell 中查找 Windows 版本 - 輸出 2

使用 PowerShell 中的 Get-WMIObject Cmdlet 搭配 WMI 類來獲取 Windows 版本

我們也可以使用 Windows 管理工具 (WMI) 類來檢查您的作業系統當前版本。

範例代碼:

(Get-WmiObject -class Win32_OperatingSystem).Caption

當我們執行 (Get-WmiObject -class Win32_OperatingSystem).Caption 時,我們正在利用 Get-WmiObject cmdlet 查詢 Windows 管理工具 (WMI) 的有關作業系統的信息。具體而言,我們的目標是 Win32_OperatingSystem 類,該類包含有關作業系統的詳細資訊。

通過訪問結果對象的 .Caption 屬性,我們正在檢索作業系統的名稱。此方法提供了一種直接通過 PowerShell 獲取 Windows 版本信息的簡單方法,使其適合各種腳本和管理任務。

輸出:

在 PowerShell 中查找 Windows 版本 - 輸出 3

[System.Environment] 類和 Get-ComputerInfo cmdlet 不同,WMI 對象在您使用最新版本時能正確顯示 Windows 作業系統版本。

使用 systeminfo 傳統命令 PowerShell 獲取 Windows 版本

我們還可以使用 systeminfo 傳統命令搭配 Windows PowerShell cmdlet 包裝器來輸出詳細的作業系統版本。通過將 systeminfo 與 PowerShell cmdlet 結合,您可以提取有關 Windows 版本的特定信息。

systeminfo /fo csv | ConvertFrom-Csv | select OS*, System*, Hotfix* | Format-List

當我們執行命令 systeminfo /fo csv 時,我們正在利用 systeminfo 命令行工具以 CSV 格式收集詳細的系統信息。

然後,我們使用 ConvertFrom-Csv 將 CSV 格式的輸出轉換為 PowerShell 對象。通過將結果管道輸入 Select,我們過濾我們感興趣的屬性,特別是以 OSSystemHotfix 開頭的屬性。

最後,我們應用 Format-List 以格式化列表視圖呈現信息。

輸出:

在 PowerShell 中查找 Windows 版本 - 輸出 4

使用 Get-CimInstance 傳統命令 PowerShell 獲取 Windows 版本

此 cmdlet 是 PowerShell 中的共通信息模型 (CIM) 基礎結構的一部分,允許您以標準化的方式查詢系統信息。通過針對 Win32_OperatingSystem 類別,您可以訪問作業系統名稱和版本等屬性。

(Get-CimInstance Win32_OperatingSystem) | Select-Object Caption, Version

當我們執行 (Get-CimInstance Win32_OperatingSystem) | Select-Object Caption, Version 時,我們正在利用 Get-CimInstance cmdlet 檢索有關 Windows 作業系統的信息,來自於 Win32_OperatingSystem 類。該類代表作業系統的各種屬性。通過將結果管道輸入 Select-Object,我們指定我們感興趣的屬性,即 Caption(代表作業系統的名稱)和 Version

輸出:

在 PowerShell 中查找 Windows 版本 - 輸出 5

結論

在 PowerShell 中,獲取 Windows 版本對於系統管理和腳本任務至關重要。我們已經探索了五種不同的方法來達成此目的:使用 [System.Environment] 類、Get-ComputerInfo cmdlet、Get-WmiObject cmdlet、systeminfo 命令和 Get-CimInstance cmdlet。

每種方法具有不同的優勢,可能根據特定需求和場景而有所偏好。無論是通過 [System.Environment] 類直接訪問版本,還是使用 Get-ComputerInfoGet-CimInstance 查詢詳細的系統信息,PowerShell 都提供了強大的工具來有效管理和監控 Windows 環境。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn