Freigeben über


WMI-Aufgaben: Computersoftware

WMI-Aufgaben für Computersoftware ermitteln Informationen, z. B. darüber, welche Software von Microsoft Windows Installer (MSI) und welche Softwareversionen installiert wurden. Weitere Beispiele finden Sie im TechNet Script Center unter https://www.microsoft.com/technet.

In den in diesem Artikel enthaltenen Skriptbeispielen werden nur Daten vom lokalen Computer abgerufen. Weitere Informationen zum Verwenden des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Nachstehend wird die Skriptausführung näher beschrieben.

So führen Sie ein Skript aus

  1. Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit VBS-Erweiterung, z. B. filename.vbs. Stellen Sie sicher, dass der Text-Editor der Datei keine TXT-Erweiterung hinzufügt.
  2. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
  3. Geben Sie cscript filename.vbs in die Eingabeaufforderung ein.
  4. Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie eine Eingabeaufforderung mit erhöhten Rechten verwenden. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch die Benutzerkontensteuerung (User Account Control, UAC) geschützt sein.

Hinweis

Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts sehr viele Ausgabedaten erzeugen können, sollten Sie die Ausgabe in eine Datei umleiten. Geben Sie an der Eingabeaufforderung die Zeichenfolge cscript filename.vbs > outfile.txt ein, um die Ausgabe des Skripts filename.vbs in die Datei outfile.txt umzuleiten.

Hinweis

Das Ausführen einer Abfrage vom Typ „Select * from Win32_Product“ kann zu unerwartetem Verhalten führen. Der Grund dafür ist, dass der Anbieter, der „Win32_Product“ unterstützt, nicht abfrageoptimiert ist. Weitere Informationen finden Sie im KB-Artikel 974524.

In der folgenden Tabelle sind Skriptbeispiele aufgeführt, die zum Abrufen verschiedener Datentypen vom lokalen Computer verwendet werden können.

Vorgehensweisen WMI-Klassen oder -Methoden
Deinstallieren von Software mithilfe eines Skripts Wenn die Software mit Microsoft Windows Installer (MSI) installiert wurde, verwenden Sie die WMI-Klasse Win32_Product und die Uninstall-Methode.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
    ("Select * from Win32_Product " _
        & "Where Name = 'Personnel database'")
For Each objSoftware in colSoftware
    objSoftware.Uninstall()
Next

PowerShell
              
              $colSoftware = Get-WmiObject -Class Win32_Product | Where-Object {$_.name -eq "Personnel database"} 

foreach ($colItem in $colSoftware) { $colItem.Uninstall() }

Inventarisieren der gesamten auf einem Computer installierten Software mithilfe eines Skripts

Wenn die Software mit Microsoft Windows Installer (MSI) installiert wurde, verwenden Sie die WMI-Klasse Win32_Product.

VB
              
              strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colSoftware = objWMIService.ExecQuery _ ("Select * from Win32_Product") 

For Each objSoftware in colSoftware Wscript.Echo "Name: " & objSoftware.Name Wscript.Echo "Version: " & objSoftware.Version Next

PowerShell
              
              $colSoftware = Get-WmiObject -Class Win32_Product 

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: "+ $colItem.Version }

Ermitteln der installierten Microsoft Office-Version

Verwenden Sie die Klasse Win32_Product, und überprüfen Sie den Wert der Eigenschaft Version.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery(_
    "Select * from Win32_Product " & _
    "Where IdentifyingNumber =" _
        & " '{90280409-6000-11D3-8CFE-0050048383C9}'")
For Each objItem in colSoftware
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "Version: " & objItem.Version
Next

PowerShell
              
              $colSoftware = Get-WmiObject -Class Win32_Product | Where-Object {$_.IdentifyingNumber -eq "{90280409-6000-11D3-8CFE-0050048383C9}"} 

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: " + $colItem.Version }

Beispiele

Das PowerShell-Codebeispiel des PowerShell-Skripts für Remote-PC-Infos verwendet eine Reihe von Hardware- und Softwareklassen, einschließlich „Win32_Product“, um verschiedene Informationen zu einem Remote-PC mithilfe von WMI und der Remoteregistrierung zu ermitteln.

WMI-Aufgaben für Skripts und Anwendungen

WMI-C++-Anwendungsbeispiele

TechNet ScriptCenter