Compartir a través de


Tareas de WMI: software informático

Las tareas de WMI para software informático obtienen información como la que instala microsoft Windows Installer (MSI) y las versiones de software. Para obtener otros ejemplos, consulte TechNet ScriptCenter en https://www.microsoft.com/technet.

Los ejemplos de script que se muestran en este tema solo obtienen datos del equipo local. Para obtener más información sobre cómo usar el script para obtener datos de equipos remotos, consulte Conexión a WMI en un equipo remoto.

En el procedimiento siguiente se describe cómo ejecutar un script.

Para ejecutar un script

  1. Copie el código y guárdelo en un archivo con una extensión .vbs, como filename.vbs. Asegúrese de que el editor de texto no agrega una extensión .txt al archivo.
  2. Abra una ventana del símbolo del sistema y vaya al directorio donde guardó el archivo.
  3. Escriba nombredearchivo.vbs de cscript en el símbolo del sistema.
  4. Si no puede acceder a un registro de eventos, compruebe si se ejecuta desde un símbolo del sistema con privilegios elevados. Algunos registros de eventos, como el registro de eventos de seguridad, pueden estar protegidos por controles de acceso de usuario (UAC).

Nota

De forma predeterminada, cscript muestra la salida de un script en la ventana del símbolo del sistema. Dado que los scripts WMI pueden generar grandes cantidades de salida, es posible que desee redirigir la salida a un archivo. Escriba cscript filename.vbs > outfile.txt en el símbolo del sistema para redirigir la salida del script de filename.vbs a outfile.txt.

Nota

La ejecución de una consulta "Select * from Win32_Product" puede dar lugar a un comportamiento inesperado. Esto se debe a que el proveedor que admite Win32_Product no está optimizado para consultas. Para obtener más información, consulte artículo de KB 974524.

En la tabla siguiente se enumeran ejemplos de script que se pueden usar para obtener varios tipos de datos del equipo local.

¿Cómo puedo... Clases o métodos WMI
... ¿Desinstalar software mediante un script? Si el software se instaló con Microsoft Windows Installer (MSI), use el Win32_Product de clase WMI y el método 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 "Base de datos del personal"} 

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

... inventario de todo el software instalado en un equipo con un script?

Si el software se instaló con Microsoft Windows Installer (MSI) usa la clase 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 }

... determinar qué versión de Microsoft Office está instalada?

Use la clase Win32_Product y compruebe el valor de la propiedad version de.

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 {$_. IdentificarNumber -eq "{90280409-6000-11D3-8CFE-0050048383C9}"} 

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

tareas de WMI para scripts y aplicaciones

ejemplos de aplicaciones de C++ de WMI

techNet ScriptCenter