Windows 2012 Server 핵심 식별


18

2012 서버가 WMI를 사용하여 핵심 설치로 설정되어 있는지 확인하고 싶습니다. 이전 질문 은 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

귀하의 질문에 약간의 편향으로 ... 서버 코어를 어떻게 정의합니까? 서버 코어가 하나 또는 두 개의 적은 기능 (GUI)이 설치된 것과 동일하다는 것을 읽었습니다. 대신 쿼리 할 수 ​​없습니까?
john

해당 기능이 WMI를 통해 설치된 것을 감지하는 방법에 대한 답변을 제공 할 수 있다면이를 피 투입하여 테스트 해 보겠습니다. WMI로 서버 코어를 식별하는 데 사용할 수있는 답변은 제 의견에 도움이 될 것입니다.
Zoredache

원격 시스템에서 WMI를 사용해보십시오. Get-WMIObject Win32_OptionalFeature | Select Name, InstallState서버에 서버 GUI 비트가 설치되어 있는지 여부를 필터링합니다.
Ryan Ries

답변:


24

PowerShell에서 :

Get-WMIObject Win32_OptionalFeature | where Name -eq 'Server-Gui-Shell' | Select InstallState

반환 전체 서버에 서버 코어에 설치.

편집하다:

위의 대답은 정확하지만 두 가지 문제가 있습니다.

  1. 워크 스테이션에서이 명령을 사용하면 아무것도 리턴하지 않으므로 추가 점검을 추가해야합니다.

  2. 내가 시도했을 때 600 ~ 3500 밀리 초가 느 렸습니다.

따라서 더 실용적인 접근 방식은 특정 파일의 존재를 확인하는 것입니다.

(Test-Path "$env:windir\explorer.exe")

이는 $falseServer Core 설치 및 $true기타 모든 설치에 대해 반환 되며 실행 하는 데 1 밀리 초가 걸립니다 .


훌륭한 답변-특히 모든 설명과 함께 제공되는 해결 방법이 마음에 듭니다.) 완벽합니다.
TomTom

6

유감스럽게도 연결 한 MSDN 기사에 답이 포함되어 있습니다.

PRODUCT _ * _ SERVER_CORE 값은 Windows Server 2012에서 반환되지 않습니다.

적절한 기능을 추가하거나 제거하여 Server 2012를 "Server Core"와 "full"설치간에 자유롭게 변환 할 수 있기 때문입니다.

이러한 기능이 있는지 확인하십시오 (예 : Server-Gui-Mgmt-Infra, Server-Gui-Shell, Desktop-Experience).


5

GUI는 기능 일 뿐이므로 설치된 기능 목록을 쿼리 할 수 ​​있습니다.

서버의 powershell에서 이것을 테스트하면 충분합니다.

이름을 얻기 위해 기능 목록을 덤프

Get-WmiObject Win32_OptionalFeature > features.txt

features.txt의 텍스트를 검색하면 해당 기능의 이름이 'Server-Gui-Mgmt'(다른 기능도 Michael 노트로 설치 될 수 있으므로 테스트 할 수 있음)를 알 수 있습니다. 그게 있다면

Get-WmiObject -query "select * from Win32_OptionalFeature where name = 'Server-Gui'"

여기에 이미지 설명을 입력하십시오


2

2012 년에는 몇 가지 옵션 기능만으로 본질적으로 동일하기 때문에 기능을 쿼리 할 수 ​​있습니다.

이 문서 는 기능을 쿼리 할 수있는 Win32_OptionalFeature 클래스에 대한 참조입니다. 선택적 기능은 이 기사에 요약 된대로 Server-Gui-Mgmt-Infra, Server-Gui-Shell 및 Desktop-Experience로 정의됩니다 .

이들 중 3 개를 쿼리하고 부울 AND 및 NOT 논리를 사용하여 이러한 기능이 설치되지 않은 서버를 선택할 수 있습니다.


2

Win32_ServerFeature를 사용합니다. 훨씬 작은 클래스이며 서버에 설치된 역할 만 포함합니다. Win32_Server 기능을 사용하는 쿼리는 훨씬 빨리 반환됩니다.

Get-WmiObject -Query "Select * FROM Win32_ServerFeature WHERE Name = 'Server Graphical Shell'" 

2

성능에 따른 로컬 및 원격 시나리오에 대한 답변에 대한 설명이 논의되었습니다. 질문자는 WMI에게 물었고 그의 예제는 PowerShell을 사용하여 WMI를 호출했습니다. 관리되지 않는 코드에서 직접 WMI를 사용하는 것도 더 빠릅니다.

이 방법은 Server 2012 및 Server 2012 R2에 효과적으로 적용되며 이후 릴리스에는 적용되지 않을 수 있습니다.

시나리오에 따라 일부 상충 관계 ... 대부분의 경우 Win32_ServerFeature가 일반적인 솔루션 또는 로컬 파일 체크인으로 선호됩니다.

  • 로컬 파일 확인 : 빠르고 더럽습니다. 움직이는 부분이 거의 없습니다.
  • MSFT_ServerManagerDeploymentTasks : Win32_ServerFeature 및 Get-WindowsFeature에서 사용하는 기본 WMI 공급자 로컬 레지스트리 캐시를 사용하며 마지막 쿼리 이후 구성 변경이없는 한 일반적으로 매우 빠르게 반환합니다. 캐시가 누락 된 경우 Win32_OptionalFeature와 거의 동일합니다. 빠른 네트워크에서 많은 기계를 쿼리하고 구성 요소의 관계와 상태에 대한 많은 세부 정보가 필요한 경우 매우 좋은 인터페이스이지만 정상적인 사용에는 어려움이 있습니다. 대신 Win32_ServerFeature를 사용하십시오.
  • Win32_ServerFeature : 일반적으로 로컬 또는 원격 쿼리를위한 최선의 선택이지만 로컬 파일 확인만큼 빠르지는 않습니다. 설치된 기능 만 반환하고 네트워크에 적은 트래픽을 발생시킵니다.
  • Get-WindowsFeature : 호출 경로의 일부로 PowerShell을 이미 사용하고 있다고 가정하면 사용이 매우 간단합니다. 원격 대상에 대해 호출 할 때 특정 기능이 설치되어 있는지 알고 싶을 때 네트워크를 통해 400K 이상으로 올라갑니다.
  • Win32_OptionalFeature / Get-WindowsOptionalFeature :이 옵션은 매우 무거울 때마다 대상에서 DISM을 쿼리합니다.

온라인 로컬 및 원격 시나리오를 다룹니다. 위의 일부는 오프라인 이미지도 타겟팅합니다.


1

방금이 솔루션에 WMI 필터를 사용한다고 생각했기 때문에 Core 2012+ 시스템에 GPO를 적용 할 수 있습니다.

SELECT * FROM Win32_OptionalFeature WHERE Caption = "Microsoft-Windows-Server-Gui-Shell-Package-DisplayName" AND InstallState = "2"

명령 행에서이를 테스트하려면 다음을 수행하십시오.

WMIC PATH Win32_OptionalFeature WHERE "Caption = 'Microsoft-Windows-Server-Gui-Shell-Package-DisplayName' AND InstallState = 2"

Core 2012 서버에 대한 WMI 필터를 만드는 방법을 찾으려고 할 때이 스레드를 우연히 발견했으며 어떤 이유로 WMI에서 Win32_OptionalFeature (또는 실제로 그러한 경로가 있는지)를 확인하도록하지 못했습니다. 이것이 다른 누군가를 돕기를 바랍니다.


0

Windows Server 2012 R2에서 다음을 사용하고 있지만 성능은 우수하지만 여전히 명시 적입니다.

$gui = (Get-WindowsFeature -Name 'Server-Gui-Shell').Installed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.