Controla las máquinas virtuales Hyper-V con Python

Estoy intentando escribir una VM de control en un servidor HyperV usando Python. Comienzo con la conexión al servidor en el que se ejecuta el servidor HyperV:

connection = wmi.connect_server(server="servername", namespace=r"root\virtualization", user=r"username", password=r"password")
wmiServerConnection = wmi.WMI(wmi=connection)

Esto me da unawmi Objeto para esta conexión.

Para detener e iniciar una máquina virtual, simplemente puedo usar:

#get the wmi object representing the VM
vmSystem = wmiServerConnection.Msvm_ComputerSystem(ElementName="VmName")
#send change request to vm
vmSystem[0].RequestStateChange(3)

Pero antes de iniciar una máquina virtual, quiero aplicar una determinada instantánea. La clase Msvm_VirtualSystemManagementService proporciona un método:ApplyVirtualSystemSnapshot/ApplyVirtualSystemSnapshotEx - para esto. Necesita elSnapshotSettingData como un parámetro y pensé que podría conseguir ese usando elGetSummaryInformation Método de la misma clase. MSDN dice que este método devuelve unMsvm_SummaryInformation clase.

Yo llamo a esta función así:

#get the wmi class object
vmManagement = wmiServerConnection.Msvm_VirtualSystemManagementService()
snapshotInfo = vmManagement[0].GetSummaryInformation([1,107])

Esto debería proporcionarme el nombre y la información de la instantánea de todas las máquinas virtuales en el servidor HyperV. Pero todo lo que consigo es una lista de objetos COM.

Cuando trato de dar una cierta VM como parámetro obtenido de

vmSettings = wmiServerConnection.Msvm_VirtualSystemSettingData(ElementName="VmName")

Me gusta esto

snapshotInfo = vmManagement[0].GetSummaryInformation([1,107], [vmSettings[0]])

se estrella

Mis preguntas:

¿Por qué no obtengo un objeto WMI?

El segundo parámetro es obviamente incorrecto. MSDN dice que necesitaCIM_VirtualSystemSettingData REF SettingData[] como parametro ¿Es el objeto WMI incorrecto? ¿Cómo consigo el parámetro correcto?

¿Cómo puedo recuperar la información que necesito del objeto COM?

¿O estoy totalmente en el camino equivocado?

Gracias Stefanie

Respuestas a la pregunta(1)

Su respuesta a la pregunta