Delen via


WMI-taken: computersoftware

WMI-taken voor computersoftware verkrijgen informatie zoals welke software wordt geïnstalleerd door microsoft Windows Installer (MSI) en softwareversies. Zie het TechNet ScriptCenter op https://www.microsoft.com/technetvoor andere voorbeelden.

De scriptvoorbeelden die in dit onderwerp worden weergegeven, verkrijgen alleen gegevens van de lokale computer. Zie Verbinding maken met WMI op een externe computer op een externe computervoor meer informatie over het gebruik van het script om gegevens op te halen van externe computers.

In de volgende procedure wordt beschreven hoe u een script uitvoert.

Een script uitvoeren

  1. Kopieer de code en sla deze op in een bestand met de extensie .vbs, zoals bestandsnaam.vbs. Zorg ervoor dat uw teksteditor geen .txt extensie aan het bestand toevoegt.
  2. Open een opdrachtpromptvenster en navigeer naar de map waarin u het bestand hebt opgeslagen.
  3. Typ cscript bestandsnaam.vbs bij de opdrachtprompt.
  4. Als u geen toegang hebt tot een gebeurtenislogboek, controleert u of u wordt uitgevoerd vanaf een opdrachtprompt met verhoogde bevoegdheid. Sommige gebeurtenislogboeken, zoals het beveiligingslogboek, kunnen worden beveiligd door UAC (User Access Controls).

Notitie

In cscript wordt standaard de uitvoer van een script weergegeven in het opdrachtpromptvenster. Omdat WMI-scripts grote hoeveelheden uitvoer kunnen produceren, kunt u de uitvoer omleiden naar een bestand. Typ cscript bestandsnaam.vbs > outfile.txt bij de opdrachtprompt om de uitvoer van de bestandsnaam.vbs script om te leiden naar outfile.txt.

Notitie

Het uitvoeren van een query 'Select * from Win32_Product' kan leiden tot onverwacht gedrag. Dit komt doordat de provider die ondersteuning biedt voor Win32_Product niet is geoptimaliseerd voor query's. Zie KB-artikel 974524voor meer informatie.

De volgende tabel bevat scriptvoorbeelden die kunnen worden gebruikt voor het verkrijgen van verschillende typen gegevens van de lokale computer.

Hoe kan ik... WMI-klassen of -methoden
... software verwijderen met behulp van een script? Als de software is geïnstalleerd met Behulp van Microsoft Windows Installer (MSI), gebruikt u de WMI-klasse Win32_Product en de methode Uninstall.
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 "Personeelsdatabase"} 

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

... inventariseer alle software die op een computer is geïnstalleerd met een script?

Als de software is geïnstalleerd met Behulp van Microsoft Windows Installer (MSI), gebruikt u de 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 }

... bepalen welke versie van Microsoft Office is geïnstalleerd?

Gebruik de klasse Win32_Product en controleer de waarde van de eigenschap 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-taken voor scripts en toepassingen

WMI C++-toepassingsvoorbeelden

TechNet ScriptCenter