我有一个Powershell脚本,我需要为各种服务器获取操作系统。到目前为止,我一直在使用WMI来完成这项任务,但是我已经了解了WMI如何获得超时,所以我想知道是否有另一种获取服务器操作系统的方法?这是我目前使用的代码,并希望更改以避免WMI:
$serverVersion = Get-WMIObject -computer $server -class Win32_OperatingSystem
答案 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