Share via


Tâches WMI : logiciels informatiques

Les tâches WMI pour les logiciels informatiques obtiennent des informations telles que les logiciels installés par Microsoft Windows Installer (MSI) et les versions logicielles. Pour obtenir d’autres exemples, consultez TechNet ScriptCenter à l’adresse https://www.microsoft.com/technet.

Les exemples de script présentés dans cette rubrique obtiennent les données uniquement à partir de l’ordinateur local. Pour plus d’informations sur l’utilisation du script afin d’obtenir des données provenant d’ordinateurs distants, consultez Connexion à WMI sur un ordinateur distant.

La procédure suivante explique comment exécuter un script.

Pour exécuter un script

  1. Copiez le code, puis enregistrez-le dans un fichier avec l’extension .vbs, par exemple nomfichier.vbs. Vérifiez que votre éditeur de texte n’ajoute pas d’extension .txt au fichier.
  2. Ouvrez une fenêtre d’invite de commandes, puis accédez au répertoire où vous avez enregistré le fichier.
  3. Tapez cscript nomfichier.vbs à l’invite de commandes.
  4. Si vous ne pouvez pas accéder à un journal des événements, vérifiez si vous exécutez la commande à partir d’une invite de commandes avec élévation de privilèges. Certains journaux des événements, par exemple le journal des événements de sécurité, peuvent être protégés par la fonctionnalité UAC (contrôle de compte d’utilisateur).

Notes

Par défaut, cscript affiche la sortie d’un script dans la fenêtre d’invite de commandes. Dans la mesure où les scripts WMI peuvent produire de grandes quantités de données en sortie, vous pouvez être amené à rediriger la sortie vers un fichier. Tapez cscript nomfichier.vbs > fichiersortie.txtà l’invite de commandes pour rediriger la sortie du scriptnomfichier.vbs vers fichiersortie.txt.

Notes

L’exécution d’une requête « Sélectionner * dans Win32_Product » peut entraîner un comportement inattendu. En effet, le fournisseur qui prend en charge Win32_Product n’est pas optimisé pour les requêtes. Pour plus d’informations, voir l’article 974524 de la Base de connaissances.

Le tableau suivant liste des exemples de script qui peuvent être utilisés pour obtenir divers types de données à partir de l’ordinateur local.

Comment puis-je... Classes ou méthodes WMI
...désinstaller un logiciel à l’aide d’un script ? Si le logiciel a été installé à l’aide de Microsoft Windows Installer (MSI), utilisez la classe WMI Win32_Product et la méthode 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 "Personnel database"} 

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

...répertorier tous les logiciels installés sur un ordinateur avec un script ?

Si le logiciel a été installé à l’aide de Microsoft Windows Installer (MSI), utilisez la classe WMI 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 }

...déterminer quelle version de Microsoft Office est installée ?

Utilisez la classe Win32_Product et vérifiez la valeur de la propriété 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 }

Exemples

L’exemple de code PowerShell Script Powershell d’information sur le PC distant utilise un certain nombre de classes matérielles et logicielles, y compris Win32Product, pour trouver diverses informations sur un PC distant à l’aide de WMI et du registre distant.

Tâches WMI pour les scripts et les applications

Exemples d’applications WMI C++

TechNet ScriptCenter