不使用WMI即可获取操作系统

时间:2012-08-13 15:06:32

标签: powershell wmi virtual-machine code-cleanup

我有一个Powershell脚本,我需要为各种服务器获取操作系统。到目前为止,我一直在使用WMI来完成这项任务,但是我已经了解了WMI如何获得超时,所以我想知道是否有另一种获取服务器操作系统的方法?这是我目前使用的代码,并希望更改以避免WMI:

$serverVersion = Get-WMIObject -computer $server -class Win32_OperatingSystem

2 个答案:

答案 0 :(得分:3)

您可能会在注册表中找到您要查找的内容。从Windows 2000起,可在此位置找到ProductName值:HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion

要使用Powershell查询此注册表值,请尝试:

(get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName

答案 1 :(得分:0)

根据所需的粒度,您还可以使用.Net的System.Environment.OSVersion

PS C:\> $os = [Environment]::OSVersion

在Windows上:

PS C:\> $os
Platform ServicePack    Version        VersionString
-------- -----------    -------        -------------
 Win32NT Service Pack 1 6.1.7601.65536 Microsoft Windows NT 6.1.7601 Service Pack 1

在Linux(Ubuntu 18.04)上:

PS /home> $os
Platform ServicePack Version   VersionString
-------- ----------- -------   ------------- 
Unix             4.15.0.36 Unix 4.15.0.36