import subprocess
import os

# vmrun工具的路径
vmrun_path = "C:/Program Files (x86)/VMware/VMware Workstation/vmrun.exe"

# 检查虚拟机是否正在运行的命令
list_running_vms_cmd = [vmrun_path, "list"]

def startVM(vmx_path):
    # 启动虚拟机的命令
    start_vm_cmd = [vmrun_path, "start", vmx_path, "nogui"]
    subprocess.run(start_vm_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    

def is_vm_running(vmx_path, running_vms_output):
    # 检查虚拟机是否在运行的VM列表中
    return vmx_path in running_vms_output

def checkSimple(vmx_path, running_vms_output):
    try:
        # 检查特定的虚拟机是否正在运行
        if not is_vm_running(vmx_path, running_vms_output):
            print(vmx_path,"虚拟机未运行,正在尝试启动...")
            # 启动虚拟机
            startVM(vmx_path)
            print("虚拟机启动成功。")
        else:
            print("虚拟机已经在运行。")
    except subprocess.CalledProcessError as e:
        print("执行命令时出错:", e)
    except Exception as e:
        print("发生错误:", e)

        
def getRunningVms():
    result = subprocess.run(list_running_vms_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

    # 检查命令是否成功执行
    if result.returncode == 0:
        # 执行成功返回脚本的输出
        return result.stdout
    else:
        print("命令执行失败,返回码:", result.returncode)
        return ""

def checkList(vmxPathList): 
    # 获取当前正在运行的虚拟机列表
    runningVmList = getRunningVms()
    for vmxPath in vmxPathList:
        checkSimple(vmxPath,runningVmList)
    
if __name__ == "__main__":
    # VMware虚拟机的路径
    vmxPathList = [
        "xxx\\XXX.vmx",
        "xxx\\YYY.vmx"
    ]
    checkList(vmxPathList)
  

然后配置一下Windows计划任务就好了