Powershell 在不使用WMI的情况下获取操作系统

Powershell 在不使用WMI的情况下获取操作系统,powershell,wmi,virtual-machine,code-cleanup,Powershell,Wmi,Virtual Machine,Code Cleanup,我有一个Powershell脚本,需要从中获取各种服务器的操作系统。到目前为止,我一直在使用WMI来完成这项任务,但是我已经读到了WMI如何获得超时,所以我想知道是否还有其他方法可以获得服务器的操作系统?以下是我目前使用的代码,为了避免WMI,我希望对其进行更改: $serverVersion = Get-WMIObject -computer $server -class Win32_OperatingSystem 您可能会在注册表中找到您要查找的内容。从Windows 2000开始,可以在

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

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

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

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

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

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

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

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

根据您需要的粒度,您还可以使用.Net的:

在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)上:


根据您需要的粒度,您还可以使用.Net的:

在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)上: