Página 1 de 1

Problema con la función wmi_info()

Publicado: 17 de abril de 2026 - 15:25
por brice73
Buen día,

Instalé el paquete tis-audi-wmi y funciona correctamente, informando adecuadamente la información WMI en los datos de auditoría.

En los paquetes wapt, solía usar la función wmi_info(), pero ahora cuando la pruebo en pyscripter, falla sistemáticamente con los mismos errores:

Código: Seleccionar todo

*** Python 3.10.19 (main, Jan 29 2026, 18:58:30) [MSC v.1929 32 bit (Intel)] on win32. ***
*** Distant Python engine is active ***
>>> from setuphelpers import *
>>> wmi_info_test1=wmi_info(keys=['Win32_ComputerSystem','Win32_ComputerSystemProduct','Win32_BIOS'])
WMI error Invalid value for list argument, fallback to py wmi
>>> wmi_info_test1=wmi_info(keys=['Win32_ComputerSystem','Win32_ComputerSystemProduct','Win32_BIOS'])
WMI error Invalid value for list argument, fallback to py wmi
WMI is broken on this computer. See https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-rebuilding-the-wmi-repository/ba-p/373846 : x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>
>>> wmi_info_test2=wmi_info(keys=['Win32_NetworkAdapter','Win32_PhysicalMemory','Win32_Printer','Win32_VideoController'])
WMI error Invalid value for list argument, fallback to py wmi
WMI is broken on this computer. See https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-rebuilding-the-wmi-repository/ba-p/373846 : x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>
>>> 
Esto ocurre en diferentes máquinas, por lo tanto, independientemente de la versión de Windows

Sin embargo, estoy utilizando la sintaxis correcta y los valores esperados para el parámetro keys, similares a los de la función audit del paquete:

Código: Seleccionar todo

def audit():

    wmi_keys = ['Win32_ComputerSystem','Win32_ComputerSystemProduct','Win32_BIOS',
    'Win32_NetworkAdapter','Win32_PhysicalMemory','Win32_Printer','Win32_VideoController',
    'Win32_LogicalDisk','Win32_OperatingSystem','Win32_DesktopMonitor',
    'Win32_USBController','Win32_SystemEnclosure','Win32_DiskDrive',
    'Win32_Volume','Win32_PnPSignedDriver']

    data_wmi_info = wmi_info(keys = wmi_keys)
    WAPT.write_audit_data_if_changed("audit-wmi", "audit-wmi", data_wmi_info)
    return "OK
Verifiqué que wmi era correcto (winmgmt /verifyrepository OK) y que el paquete audi-wmi recupera correctamente la información de wmi.

¿Ves cuál es el problema? Me gustaría poder usar la función wmi_info(), muy práctica, en los paquetes, que recopila gran cantidad de datos.

Re: Problema con la función wmi_info()

Publicado: 17 de abril de 2026 - 16:17
por dcardon
Hola Brice,

si no recuerdo mal, ha habido cambios en la forma en que se recupera la información de WMI para gestionar mejor los problemas de gen_py (la creación de archivos stub de Python para llamar a objetos COM, especialmente WMI) y otros problemas de CoInitialize (una característica de Microsoft también para objetos COM). Voy a consultar internamente para ver qué está pasando.

Saludos,

Denis

Re: Problema con la función wmi_info()

Publicado: 17 de abril de 2026 - 16:50
por brice73
Hola Denis,

entendido, ¡gracias! :)

Saludos cordiales.

Re: Problema con la función wmi_info()

Publicado: 22 de abril de 2026 - 10:21
por brice73
Hola Denis,

solo una breve actualización para confirmar que la función wmi_info(), cuando se usa dentro de la función de instalación de un paquete, parece funcionar (devuelve el diccionario de información WMI).

Por lo tanto, la función wmi_info() funciona dentro del contexto de instalación o auditoría de un paquete, pero no fuera de él (por ejemplo, en PyScripter fuera de la instalación de un paquete).

Saludos,