传统的配置宿主机的开机自启的流程:
1、VMware Workstation工作台 -> 文件 -> 配置自动启动虚拟机 -> 按顺序选择需要启动的虚拟机(此步骤需要留意”C:\ProgramData\VMware\VMware Workstation\vmautostart”是否有权限进行编辑) 2、任务管理器 -> 服务 -> 找到VmwareAutostartService右键打开服务 -> VMware自动启动服务 右键 常规 启动类型 设置为 自动启动 3、如果上述不成功,需要留意VMware自动启动服务的启动用户是否配置正确,任务管理器 -> 服务 -> 找到VmwareAutostartService右键打开服务 -> VMware自动启动服务 右键 登录 选择此账户,浏览添加你登录windows的账户 此时开机自启动的虚拟机的启动状态是不会展示在VMware Workstation工作台上 以上办法尝试了多次,仍还是无法实现虚拟机随宿主机的开机而自启动,故宣告此方法已过时
脚本/api的方式直接操作宿主机的VMware Workstation工作台以实现目前所有的虚拟机的自启动: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 @echo off set VMRUN="C:\Program Files (x86)\VMware\VMware Workstation\vmrun" setlocal setlocal enabledelayedexpansion set "DIR_PATH=%~1" :: 检查是否提供了目录参数 if "%~1" =="" ( echo Usage: %0 directory_path exit /b 1 ) :: 设置目录路径 set "DIR_PATH=%~1" :: 检查目录是否存在 if not exist "%DIR_PATH%" ( echo Directory not found: %DIR_PATH% exit /b 1 ) for /d %%d in ("%DIR_PATH%\*" ) do ( :: 在每个文件夹中查找.vm文件 for %%f in ("%%d\*.vmx" ) do ( :: 检查是否为.vm文件 if "%%~xf" ==".vmx" ( %VMRUN% -T ws start "%%f" nogui echo "%%f" ) ) ) endlocal
后续在任务计划程序中配置开机时与每日执行即可,或者直接导入下方的xml到任务计划程序,配置如下所示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 <?xml version="1.0" encoding="UTF-16" ?> <Task version ="1.2" xmlns ="http://schemas.microsoft.com/windows/2004/02/mit/task" > <RegistrationInfo > <Date > 2024-10-25T12:21:26.1281209</Date > <Author > DESKTOP-MQP78GA\dell</Author > <URI > \auto start vms</URI > </RegistrationInfo > <Triggers > <BootTrigger > <Enabled > true</Enabled > </BootTrigger > <CalendarTrigger > <Repetition > <Interval > PT30M</Interval > <Duration > P1D</Duration > <StopAtDurationEnd > true</StopAtDurationEnd > </Repetition > <StartBoundary > 2024-10-25T12:21:30</StartBoundary > <Enabled > true</Enabled > <ScheduleByDay > <DaysInterval > 1</DaysInterval > </ScheduleByDay > </CalendarTrigger > </Triggers > <Principals > <Principal id ="Author" > <UserId > S-1-5-21-331813416-2228344415-2472486996-1001</UserId > <LogonType > InteractiveToken</LogonType > <RunLevel > HighestAvailable</RunLevel > </Principal > </Principals > <Settings > <MultipleInstancesPolicy > IgnoreNew</MultipleInstancesPolicy > <DisallowStartIfOnBatteries > true</DisallowStartIfOnBatteries > <StopIfGoingOnBatteries > true</StopIfGoingOnBatteries > <AllowHardTerminate > true</AllowHardTerminate > <StartWhenAvailable > true</StartWhenAvailable > <RunOnlyIfNetworkAvailable > false</RunOnlyIfNetworkAvailable > <IdleSettings > <StopOnIdleEnd > true</StopOnIdleEnd > <RestartOnIdle > false</RestartOnIdle > </IdleSettings > <AllowStartOnDemand > true</AllowStartOnDemand > <Enabled > true</Enabled > <Hidden > false</Hidden > <RunOnlyIfIdle > false</RunOnlyIfIdle > <WakeToRun > true</WakeToRun > <ExecutionTimeLimit > PT1H</ExecutionTimeLimit > <Priority > 7</Priority > <RestartOnFailure > <Interval > PT10M</Interval > <Count > 3</Count > </RestartOnFailure > </Settings > <Actions Context ="Author" > <Exec > <Command > C:\Users\dell\Documents\auto.bat</Command > <Arguments > "C:\Users\dell\Documents\Virtual Machines"</Arguments > </Exec > </Actions > </Task >