Saya ingin mendeteksi apakah server 2012 telah diatur sebagai instalasi Inti menggunakan WMI. Pertanyaan sebelumnya, sepertinya menunjukkan bahwa saya bisa mendapatkan OperatingSystemSKU dari Win32_OperatingSystem . Sistem Core Windows 2012 saya melaporkan OperatingSystemSKU dari 7. Artikel dari pertanyaan lain akan menunjukkan adalah PRODUCT_STANDARD_SERVER, dan jika memiliki instalasi inti saya harus mengharapkan untuk melihat nilai 0x0000000D sebagai gantinya untuk PRODUCT_STANDARD_SERVER_CORE.
Apa yang kulewatkan di sini. Saya akhirnya ingin membuat kebijakan dan menggunakan penargetan tingkat item untuk hanya menerapkan kebijakan itu untuk Windows 2012 Server Core menginstal.
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
windows-server-2012
wmi
windows-server-core
Sakit kepala
sumber
sumber
Get-WMIObject Win32_OptionalFeature | Select Name, InstallState
dan memfilter apakah server memiliki bit GUI server yang diinstal atau tidak.Jawaban:
Di PowerShell:
mengembalikan 1 pada server penuh dan 2 pada instalasi inti server.
Edit:
Meskipun jawaban saya di atas benar, ada dua masalah dengan itu:
Saat menggunakan perintah ini di workstation, itu tidak menghasilkan apa-apa, jadi Anda harus menambahkan cek tambahan untuk ini.
Itu lambat, ketika saya mencobanya, butuh antara 600 dan 3.500 milidetik.
Jadi pendekatan yang lebih pragmatis adalah dengan hanya memeriksa keberadaan file tertentu:
Ini mengembalikan
$false
untuk instalasi Server Core dan$true
untuk semua yang lain dan dibutuhkan satu milidetik untuk mengeksekusi.sumber
Lucu, artikel MSDN yang Anda tautkan berisi jawabannya:
Ini karena Server 2012 dapat dikonversi secara bebas antara instalasi "Server Core" dan "penuh" hanya dengan menambahkan atau menghapus fitur yang sesuai.
Anda perlu memeriksa ada tidaknya fitur-fitur tersebut (mis. Server-Gui-Mgmt-Infra, Server-Gui-Shell, Desktop-Experience).
sumber
Karena GUI hanyalah sebuah fitur, Anda dapat menanyakan daftar fitur yang diinstal
Hanya menguji ini di PowerShell pada server di sini bekerja dengan cukup baik:
Buang daftar fitur untuk mengambil nama
Mencari teks fitur.txt memberi tahu saya bahwa fitur tersebut bernama 'Server-Gui-Mgmt' (fitur lain mungkin diinstal juga seperti yang dicatat Michael dalam jawabannya, sehingga Anda dapat menguji untuk itu juga), dan kita dapat mencari untuk melihat jika itu ada
sumber
Saya menduga bahwa karena keduanya pada dasarnya sama pada tahun 2012 dengan hanya beberapa fitur opsional untuk membedakannya, Anda dapat meminta fitur-fiturnya.
artikel ini adalah referensi untuk kelas Win32_OptionalFeature, yang akan memungkinkan Anda untuk menanyakan fitur. Fitur opsional didefinisikan sebagai Server-Gui-Mgmt-Infra, Server-Gui-Shell dan Desktop-Experience, sebagaimana diuraikan dalam artikel ini .
Anda dapat meminta 3 dari mereka dan menggunakan logika Boolean AND dan NOT untuk memilih server yang tidak memiliki fitur-fitur ini diinstal.
sumber
Saya akan menggunakan Win32_ServerFeature, ini adalah kelas yang jauh lebih kecil dan hanya berisi peran yang diinstal pada server. Kueri yang menggunakan fitur Win32_Server akan kembali lebih cepat.
sumber
Beberapa klarifikasi tentang jawaban untuk skenario lokal dan jarak jauh ketika kinerja dibahas. Penanya bertanya pada WMI, dan contohnya menggunakan PowerShell untuk memanggil WMI. Menggunakan WMI langsung dari kode yang tidak dikelola juga lebih cepat.
Harap dicatat bahwa pendekatan tersebut berlaku secara efektif untuk Server 2012 dan Server 2012 R2, dan mungkin tidak berlaku untuk rilis mendatang.
Beberapa pertukaran tergantung pada skenario Anda ... Untuk sebagian besar kasus, Win32_ServerFeature lebih disukai sebagai solusi umum, atau file lokal memeriksa dalam keadaan darurat.
Itu mencakup skenario lokal dan jarak jauh online. Beberapa di atas juga akan menargetkan gambar offline.
sumber
Saya hanya berpikir saya akan berpadu dengan WMI Filter untuk solusi ini, sehingga Anda dapat menerapkan GPO ke sistem Core 2012+:
Untuk menguji ini di baris perintah:
Saya tersandung pada utas ini ketika mencoba menemukan cara untuk membuat WMI Filter untuk server Core 2012, dan untuk beberapa alasan tidak terpikir oleh saya untuk meminta WMI memeriksa Win32_OptionalFeature (atau memang, jalur seperti itu ada). Semoga ini bisa membantu orang lain.
sumber
Pada Windows Server 2012 R2, saya menggunakan yang berikut ini, kinerja baik sementara masih cukup eksplisit.
sumber