none
Treiber auflisten

    Frage

  • Hallo, ich habe 15 Treiber von Kaspersky, die ich gern mit einer Abfrage auflisten wollte. Dies scheiterte leider daran, dass ich in der WMI-Klasse win32_SystemDriver keine DriverProviderName als Eigenschaft habe wie z.B. bei win32_PnPSignedDriver. Schade!

    Also habe ich geschaut, wo Kaspersky enthalten ist. Description!

    Leider werden aber nicht alle Treiber von Kaspersky mit dieser Information gefüllt. 5 Treiber fehlen also in meiner Übersicht, siehe Codeblock.

    Meine Lösung: Ich bau die per Einzelabfrage mit ein. Nur wie bekomme ich die allesamt in eine Ausgabe?

    $Treiber_Kaspersky = GWMI win32_systemdriver | ? {$_.description -like "*Kaspersky*"} | fl * > C:\temp\Treiber_Kaspersky.log
    $Treiber_Kaspersky_kneps = GWMI win32_systemdriver | ? {$_.PathName -like "*C:\Windows\system32\DRIVERS\kneps.sys*"} | fl *
    $Treiber_Kaspersky_klwtp = GWMI win32_systemdriver | ? {$_.PathName -like "*C:\Windows\system32\DRIVERS\klwtp.sys*"} | fl *
    $Treiber_Kaspersky_klwfp = GWMI win32_systemdriver | ? {$_.PathName -like "*C:\Windows\system32\DRIVERS\klwfp.sys*"} | fl *
    $Treiber_Kaspersky_lfdedmp = GWMI win32_systemdriver | ? {$_.PathName -like "*C:\Windows\system32\DRIVERS\lfdedmp.sys*"} | fl *
    $Treiber_Kaspersky_klelam = GWMI win32_systemdriver | ? {$_.PathName -like "*C:\Windows\system32\DRIVERS\klelam.sys*"} | fl *

    Ich wollte diese Variablen mittels += addieren. Dies läuft aber insofern schief, dass nur der letzte Eintrag erhalten bleibt. Bei Get-MessageTrackingLog hingegen hat das immer hervorragend funktioniert...

    Was kann ich unternehmen, um die Liste vollständig zu haben? Hintergrund ist, dass ich diese dann gerne im KSC (Administratiosnserver der Business Security Reihe) als Externes Werkzeug einbauen möchte, siehe Forum ID 224921

    Danke schön!

    Donnerstag, 13. April 2017 15:54

Antworten

  • Format cmdlets wie Format-List (fl *) gehören prinzipiell ans allerletzte Ende der Pipeline. Sie brechen die Pipeline auf und machen aus guten informativen Objekten dumme unflexible Strings.  Die kann man auch nicht mehr ohne größeren Aufwand vernünftig weiterverarbeiten.

    Mit dem Get-WMIObject cmdlet sammelst Du die Daten ein - es ist effektiver, das nicht 6 mal zu machen, sondern nur einmal.

     und mit den einmal gesammelten Daten weiterzuarbeiten. Am Ende speicherst Du das ganze in einer Variable und kannst dann mit den Daten in der Variable machen, was Du brauchst - ohne die Daten immer und immer wieder neu erzeugen zu müssen.

    Falls das Ergebnis noch nicht zufriedenstellend ist, kannst Du mit den -or Verkettungen noch ein bissl spielen und vielleicht an einer Stelle gegen ein -and oder -not austauschen.

    Sieht zwar nicht wirklich schön aus, aber sollte funktionieren: (ich kann's leider bei mir nicht testen - 'hab keine Kasperski-Treiber)

    Get-WmiObject -Class win32_systemdriver | 
        Where-Object {
            $_.description -like "*Kaspersky*" -or $_.PathName -like "*DRIVERS\kneps.sys*" -or $_.PathName -like "*DRIVERS\klwtp.sys*" -or $_.PathName -like "*DRIVERS\klwfp.sys*" -or $_.PathName -like "*DRIVERS\lfdedmp.sys*" -or $_.PathName -like "*DRIVERS\klelam.sys*"
        } -OutVariable KasperskiDriver
    $KasperskiDriver | Format-List *
    $KasperskiDriver | Export-CSV -Path C:\sample\Treiber_Kaspersky.csv -Encoding UTF8 -Delimiter ';' -NoTypeInformation 
    

    Die Ausgabe der Daten hab ich jetzt mal in eine CSV-Datei geleitet.  Das erschien mir bei der Art der Daten sinnvoller als nur Test oder Log.

    Um die Ausgabe in der Konsole ein wenig übersichtlicher zu gestallten, kannst Du Dir ein paar aussagekräftige Properties rauspicken und nur die anzeigen ... am besten dann auch gleich als Tabelle .... sieht besser aus, glaub ich. Also z.B. so:

    $KasperskiDriver | Format-Table -AutoSize Name,Status,DisplayName,PathName

    Und noch ein Tipp zum Schluss. Es erleichtert uns und Dir selbst auch das Leben, wenn Du hier im Forum und auch in Scripten, keine Aliasse benutzt. Der Code lässt sich so viel leichter lesen und verstehen. Dann fallen meistens auch Fehler schneller auf.

    Viel Spaß, Frohe Ostern und einen fleißigen Osterhasen!  ;-)


    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 13. April 2017 19:50