识别 Windows 2012 Server 核心

Zor*_*che 20 wmi windows-server-core windows-server-2012

我想检测是否已使用 WMI 将 2012 服务器设置为 Core 安装。一个较早的问题似乎表明我可以从 Win32_OperatingSystem获取OperatingSystemSKU。我的 Windows 2012 核心系统报告的 OperatingSystemSKU 为 7。来自另一个问题的文章似乎表明是 PRODUCT_STANDARD_SERVER,如果安装了核心,我应该会看到 PRODUCT_STANDARD_SERVER_CORE 的值为 0x0000000D。

我在这里错过了什么。我最终想创建一个策略并使用项目级目标来仅将该策略应用于 Windows 2012 Server Core 安装。

PS C:\Users\zoredache\Documents> gwmi -Query "select OPeratingSystemSKU,Version,ProductType from Win32_OperatingSystem"

__GENUS            : 2
__CLASS            : Win32_OperatingSystem
__SUPERCLASS       :
__DYNASTY          :
__RELPATH          : Win32_OperatingSystem=@
__PROPERTY_COUNT   : 3
__DERIVATION       : {}
__SERVER           :
__NAMESPACE        :
__PATH             :
OperatingSystemSKU : 7
ProductType        : 2
Version            : 6.2.9200
Run Code Online (Sandbox Code Playgroud)

Pet*_*orf 24

在 PowerShell 中:

Get-WMIObject Win32_OptionalFeature | where Name -eq 'Server-Gui-Shell' | Select InstallState
Run Code Online (Sandbox Code Playgroud)

在完整服务器上返回1,在服务器核心安装上返回2

编辑:

虽然我上面的回答是正确的,但它有两个问题:

  1. 在工作站上使用此命令时,它不会返回任何内容,因此您必须为此添加额外的检查。

  2. 它很慢,当我尝试时,它花了 600 到 3500 毫秒。

所以更实用的方法是只检查某个文件是否存在:

(Test-Path "$env:windir\explorer.exe")
Run Code Online (Sandbox Code Playgroud)

这将返回$false服务器核心安装和$true所有其他安装,执行需要一毫秒


Mic*_*ton 6

有趣的是,您链接的那篇 MSDN 文章包含了答案:

PRODUCT_*_SERVER_CORE 值不会在 Windows Server 2012 中返回。

这是因为 Server 2012 可以通过添加或删除适当的功能在“服务器核心”和“完整”安装之间自由转换。

您需要检查这些功能是否存在(例如 Server-Gui-Mgmt-Infra、Server-Gui-Shell、Desktop-Experience)。


Rob*_*oir 5

由于 GUI 只是一个功能,您可以查询已安装的功能列表

只需在此处的服务器上的 powershell 中对此进行测试就足够了:

转储功能列表以获取名称

Get-WmiObject Win32_OptionalFeature > features.txt
Run Code Online (Sandbox Code Playgroud)

搜索 features.txt 的文本告诉我该功能名为“Server-Gui-Mgmt”(Michael 在他的回答中指出,也可能安装了其他功能,因此您也可以测试这些功能),我们可以搜索以查看如果存在

Get-WmiObject -query "select * from Win32_OptionalFeature where name = 'Server-Gui'"
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


归档时间:

查看次数:

11244 次

最近记录:

8 年,3 月 前