Получить операционную систему без использования WMI

У меня есть сценарий Powershell, в котором мне нужно получить операционную систему для различных серверов. До сих пор я использовал WMI для выполнения этой задачи, однако я читал о том, как WMI может получать тайм-ауты, поэтому мне было интересно, есть ли другой метод получения операционной системы сервера? Вот код, который я использую сейчас и хочу изменить, чтобы избежать WMI:

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

person Valrok    schedule 13.08.2012    source источник


Ответы (2)


Вероятно, вы найдете в реестре то, что ищете. Начиная с Windows 2000 значение ProductName можно найти в этом месте: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion.

Чтобы запросить это значение реестра с помощью Powershell, попробуйте:

(get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName
person jon Z    schedule 13.08.2012

В зависимости от того, какая степень детализации вам нужна, вы также можете использовать .Net System.Environment.OSVersion:

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

на окнах:

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
person SimplyKnownAsG    schedule 12.10.2018