windows虚拟机使用脚本进行磁盘扩容,并设置为开机启动
备注:
我是在Clouudpods上创建了一个window虚拟机,进行磁盘扩容实验的
1、创建虚拟机
在创建一个windows虚拟机,参数如下:
透传设备 | 1卡 |
---|---|
CPU核数 | 12核 |
内存 | 80G |
操作系统 | win11-23H2 |
系统盘 | 50G |
数据盘 | 50G |
2、登录虚拟机
点击截图中的【远程控制】,密码在截图中【密码】处:
3、上传.bat脚本
dataDiskExtend.bat如下:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
:: 定义需要检查的磁盘字母
set "target_drive=E"
:: 检查E盘是否已存在
if exist "%target_drive%:\" (
:: 检查E盘是否已格式化
for /f "tokens=2 delims==" %%a in ('wmic logicaldisk where "DeviceID='%target_drive%:'" get VolumeName /value') do (
if "%%a" == "" (
echo 磁盘 %target_drive% 未被格式化。
goto :createNewPartition
) else (
echo 磁盘 %target_drive% 已被格式化,卷名为: %%a
goto :extendExistingPartition
)
)
) else (
echo E盘不存在。
goto :createNewPartition
)
:extendExistingPartition
(
echo select volume %target_drive%
echo extend
echo exit
) > "%TEMP%\extend_partition_commands.txt"
echo 正在尝试扩展E盘...
diskpart /s "%TEMP%\extend_partition_commands.txt"
if errorlevel 1 (
echo 扩展E盘失败。
) else (
echo 成功扩展了E盘。
)
goto :cleanup
:createNewPartition
(
echo select disk 1
echo clean
echo create partition primary
echo format fs=NTFS quick label="Data"
echo assign letter=%target_drive%
echo exit
) > "%TEMP%\create_partition_commands.txt"
echo 正在尝试创建并分配新的E盘...
diskpart /s "%TEMP%\create_partition_commands.txt"
if errorlevel 1 (
echo 创建并分配新的E盘失败。
) else (
echo 成功创建并分配了新的E盘。
)
:cleanup
del "%TEMP%\extend_partition_commands.txt" 2>nul
del "%TEMP%\create_partition_commands.txt" 2>nul
pause :: 执行脚本会停留在cmd页面,并输出“按任意键退出”字样。去掉就没有了
exit
4、设置脚本为开机启动
4.1 打开文件资源管理器。
4.2 在地址栏中输入 shell:startup,然后按 Enter 键。
4.3 把文件塞进去
5、查看磁盘分配情况
注意:
我这里有一个CD驱动器(D:),所以我在写扩展脚本时是从E开始的!
因为针对上面截图中的这个CD驱动器(D:),脚本中检查D盘是否已存在的那段代码,认为D盘是不存在的,所以要是从D开始的话,会出现一种现象:从【管理】-【磁盘管理】处查看磁盘扩展情况,磁盘显示已分配,并且显示状态良好,但是没有具体的磁盘号,同时在文件管理器中查看,并没有扩展好的任何磁盘号。
下面是查看磁盘管理器的方法,只提供方法哈!
这个并不是我虚拟机上的截图,所以第二个截图磁盘信息与全文的对不上,这里只是告诉你怎么查看磁盘情况
6、关机后再开机,测试是否可以自动进行磁盘扩容
这里需要稍微等一小小会儿,脚本才执行,有个开机准备时间!
7、打包镜像
-
虚拟机关机
-
保存镜像