none
Security Update- und Alert-Status abfragen RRS feed

  • Frage

  • Hallo Community,

    folgendes Problem stellt sich mir dar:

    Ich habe die Aufgabe, die Aktualität der installierten Security-Software zu überprüfen und zu checken, ob es Virenfunde gab - mittels PowerShell Version 2.

    Die Schwierigkeit liegt meiner Meinung darin, das es sich um Windows Server Systeme von 2003 bis 2012 mit unterschiedlichen Security-Suites (Avira, DATEV, Microsoft, Kaspersky, etc.) handelt. Und um nicht für jede Softwarelösung ein eigenes Skript schreiben zu müssen, habe ich mir überlegt, das doch sicherlich irgendwo die Informationen zu den Security-Status allgemein abgelegt sein müssen - schließlich meckert das Wartungscenter ja auch unabhängig von der installierten Schutzsoftware wenn es damit Probleme gibt.

    Die Skripte die im Internet zu finden sind, funktionieren teilweise schon sehr gut und entsprechen auch fast dem, was ich benötige - allerdings sind diese für Client-OS' ausgelegt.

    Beispielskript:

    function Get-AntiVirusProduct {

    [CmdletBinding()]

    param (

    [parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]

    [Alias('name')]

    $computername=$env:computername

    )

    $AntiVirusProduct = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct  -ComputerName $computername

    #Switch to determine the status of antivirus definitions and real-time protection.

    #The values in this switch-statement are retrieved from the following website: http://community.kaseya.com/resources/m/knowexch/1020.aspx

    switch ($AntiVirusProduct.productState) {

    "262144" {$defstatus = "Up to date" ;$rtstatus = "Disabled"}

        "262160" {$defstatus = "Out of date" ;$rtstatus = "Disabled"}

        "266240" {$defstatus = "Up to date" ;$rtstatus = "Enabled"}

        "266256" {$defstatus = "Out of date" ;$rtstatus = "Enabled"}

        "393216" {$defstatus = "Up to date" ;$rtstatus = "Disabled"}

        "393232" {$defstatus = "Out of date" ;$rtstatus = "Disabled"}

        "393488" {$defstatus = "Out of date" ;$rtstatus = "Disabled"}

        "397312" {$defstatus = "Up to date" ;$rtstatus = "Enabled"}

        "397328" {$defstatus = "Out of date" ;$rtstatus = "Enabled"}

        "397584" {$defstatus = "Out of date" ;$rtstatus = "Enabled"}

    default {$defstatus = "Unknown" ;$rtstatus = "Unknown"}

        }

    #Create hash-table for each computer

    $ht = @{}

    $ht.Computername = $computername

    $ht.Name = $AntiVirusProduct.displayName

    $ht.ProductExecutable = $AntiVirusProduct.pathToSignedProductExe

    $ht.'Definition Status' = $defstatus

    $ht.'Real-time Protection Status' = $rtstatus

    #Create a new object for each computer

    New-Object -TypeName PSObject -Property $ht

    }

    Fehlermeldung bei Ausführung auf einem Server-OS:

    Get-WmiObject : Ungültiger Namespace
    Bei C:\Users\USERNAME\Desktop\virenstatus_auslesen.ps1:9 Zeichen:34
    + $AntiVirusProduct = Get-WmiObject <<<<  -Namespace root\SecurityCenter2 -Class AntiVirusProduct  -ComputerName $computername
        + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
        + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

    Laut Recherche eines Kollegen liegt der Fehler, warum das Skript auf einem Server nicht läuft, darin, dass Windows Server OS' kein oder ein anderes Security-Center besitzen/nutzen als die Client-Betriebssysteme.

    Hat jemand einen Ansatz wie das zu lösen ist?

    Benötigt werden als Informationen die das Skript ausgibt:

    - Name der Software

    - Datum der letzten Signaturen

    - Ergebnis des letzten Updates (erfolgreich, fehlgeschlagen, etc.)

    - Schadsoftware gefunden? (Wenn ja: Pfad zur Datei und ausgeführte Aktion, Wenn nein: Keine)

    Vielen Dank und freundliche Grüße

    Sandro



    • Bearbeitet SandroReiter Donnerstag, 10. Oktober 2013 14:21
    Donnerstag, 10. Oktober 2013 13:31

Antworten

Alle Antworten