Jump to content

wim select in der PS prüfen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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 von BOfH_666
Link zu diesem Kommentar

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 von TheCracked
Link zu diesem Kommentar
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.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...