Freigeben über


WMI-Aufgaben: Computersoftware

WMI-Aufgaben für Computersoftware erhalten Informationen, z. B. welche Software von microsoft Windows Installer (MSI) und Softwareversionen installiert wird. Weitere Beispiele finden Sie im TechNet ScriptCenter unter https://www.microsoft.com/technet.

Die in diesem Thema gezeigten Skriptbeispiele erhalten nur Daten vom lokalen Computer. Weitere Informationen zur Verwendung des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Das folgende Verfahren beschreibt, wie ein Skript ausgeführt wird.

Ausführen eines Skripts

  1. Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit der Erweiterung .vbs, z. B. filename.vbs. Stellen Sie sicher, dass der Text-Editor der Datei keine .txt Erweiterung hinzu fü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 an der Eingabeaufforderung ein.
  4. Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie über eine Eingabeaufforderung mit erhöhten Rechten ausgeführt werden. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch Benutzerzugriffssteuerelemente (UAC) geschützt werden.

Anmerkung

In cscript wird standardmäßig die Ausgabe eines Skripts im Eingabeaufforderungsfenster angezeigt. Da WMI-Skripts große Mengen an Ausgabe erzeugen können, möchten Sie die Ausgabe möglicherweise an eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt an der Eingabeaufforderung ein, um die Ausgabe des filename.vbs Skripts an outfile.txtumzuleiten.

Anmerkung

Das Ausführen einer Abfrage "Select * from Win32_Product" kann zu unerwartetem Verhalten führen. Dies liegt daran, dass der Anbieter, der Win32_Product unterstützt, keine Abfrage optimiert 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.

Wie kann ich... WMI-Klassen oder -Methoden
... Software mit einem Skript deinstallieren? 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 "Personaldatenbank"} 

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

... alle auf einem Computer installierten Software mit einem Skript inventarisieren?

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, welche Version von Microsoft Office installiert ist?

Verwenden Sie die Win32_Product Klasse, 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 }

WMI-Aufgaben für Skripts und Anwendungen

WMI C++-Anwendungsbeispiele

TechNet ScriptCenter-