TheCracked 13 Geschrieben 29. Januar 2018 Melden Teilen Geschrieben 29. Januar 2018 Hallo Zusammen, wie kann ich ein erstellten querry für einen wmi Filter in der PS auf Richtigkeit testen? WMI querry sieht so aus: (Es soll geprüft werden, ob das OS ein Windows Server 2016 ist, auch wenn es sich um einen DC handelt..) select * from Win32_OperatingSystem where Version like "10.%" and ProductType="3" or ProductType="2" Wie kann ich denn in der PS testen, ob der select so korrekt ist? Es sollte ja ein true oder false zurück kommen. Habe in der PS schon so was probiert, jedoch ohne Erfolg: Get-WmiObject -Class win32_operatingsystem -namespace root/cimv2 | where Version like "10.%" and ProductType="3" or ProductType="2" ------------- Where-Object : A positional parameter cannot be found that accepts argument '10.%'. At line:1 char:30 + ... ingsystem | where Version like '10.%' and ProductType="3" or ProductT ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.WhereObjectCommand Grüße TC Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 29. Januar 2018 Melden Teilen Geschrieben 29. Januar 2018 Es gibt von MSFT einen WMI-Code Creator, der erstellt dir Scripte on the Fly. Hier gehts zum Download: https://www.microsoft.com/en-us/download/details.aspx?id=8572 Ansonsten einfach selbst ein Script dafür erstellen und abfragen. strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_OperatingSystem",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_OperatingSystem instance" Wscript.Echo "-----------------------------------" Wscript.Echo "ProductType: " & objItem.ProductType Next Jetzt brauchst Du nur noch deinen SELECT an der richtigen Stelle einfügen. BTW: Auch wenn es schnell geht, ersetze das * durch eine Property, die es auch gibt. Damit geht das Script nochmal schneller. Zitieren Link zu diesem Kommentar
TheCracked 13 Geschrieben 29. Januar 2018 Autor Melden Teilen Geschrieben 29. Januar 2018 Merci dir Sunny.. Werd mir den Code Generator mal ansehen.. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 29. Januar 2018 Melden Teilen Geschrieben 29. Januar 2018 (bearbeitet) Der ProductType in der WMI-Klasse OperationgSystem unterscheidet meines Wissens zwischen Workstation, Server (nicht nur 2016) und Domain Controller. Wenn Du in einem Where-Object-Filter Bedingungen verknüpfen willst, musst Du die "Script-Schreibweise" nehmen. Und ich würde die etwas modernere Variante empfehlen. Also so ungefähr: Get-CimInstance -ClassName CIM_OperatingSystem | Where-Object -FilterScript {$_.Version -like '10.*' -and ($_.ProductType -eq 3 -or $_.ProductType -eq 2)} Es wird aber kein True oder false zurückgeliefert, sondern ein Object vom Typ "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem". Du könntest aber auch einfach erst mal das Object "einsammeln" und dann die gewünschten Properties prüfen. Also so ungerfähr: $OS = Get-CimInstance -ClassName CIM_OperatingSystem If($OS.Version -like '10.*' -and ($_.ProductType -eq 3 -or $_.ProductType -eq 2)){ 'Jawoll' } Else{ 'Nö' } Ich würde empfehlen, sich die Grundlagen von Powershell anzueignen. Einen guten Einstieg gibt's bei Microsoft in der Virtual Academy: Microsoft Virtual Academy - Getting Started with Microsoft PowerShell Viel Spaß bearbeitet 29. Januar 2018 von BOfH_666 Zitieren Link zu diesem Kommentar
TheCracked 13 Geschrieben 30. Januar 2018 Autor Melden Teilen Geschrieben 30. Januar 2018 (bearbeitet) Danke für deinen Beitrag.. Das werde ich mir wenn ein bisschen Zeit ist auch mal ansehen. Viele Grüße edit: Wenn ich aber einen wmi filter für ein gpo erstelle, muss in dem select schon diese Schreibweise stehen oder? select * from Win32_OperatingSystem where Version like "10.%" and ProductType="3" bearbeitet 30. Januar 2018 von TheCracked Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 30. Januar 2018 Melden Teilen Geschrieben 30. Januar 2018 Ich bin jetzt auch nicht der GPO-WMI-Filter-Profi, aber das sieht für mich von der Syntax her ganz plausibel aus. ... aber im Zweifel kannst Du es ja bevor Du es "produktiv" ausrollst nochmal testen. Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 30. Januar 2018 Melden Teilen Geschrieben 30. Januar 2018 vor 3 Stunden schrieb TheCracked: Wenn ich aber einen wmi filter für ein gpo erstelle, muss in dem select schon diese Schreibweise stehen oder? select * from Win32_OperatingSystem where Version like "10.%" and ProductType="3" Sollte IMO so passen. Testen musst Du schon selbst. ;) BTW: Schau bei Martin Binder in Sachen GPO und Performance: http://evilgpo.blogspot.de/2014/11/wmi-filter-performance-in-group-policy.html Es gibt noch weitere Artikel bei ihm zu dem Thema zu finden. 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.