furniture-3d-system-Wu/scripts/docker-compress-vhdx.ps1
WuYongJie 5821d73291 初始提交:3D家具安装展示系统
包含:
- furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画)
- autocad-plugin:AutoCAD 家具导出插件源码
- 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 14:00:19 +08:00

69 lines
2.3 KiB
PowerShell

# Docker VHDX 压缩脚本
# 用途:压缩 Docker 的 VHDX 虚拟磁盘文件
# 注意:此操作需要停止 Docker Desktop
Write-Host "=== Docker VHDX 压缩工具 ===" -ForegroundColor Cyan
Write-Host "此操作将停止 Docker Desktop 并压缩 VHDX 文件`n" -ForegroundColor Yellow
$vhdxPath = "D:\Users\Mr_Wu01\Documents\DockerDesktopWSL\disk\docker_data.vhdx"
# 1. 检查文件是否存在
if (!(Test-Path $vhdxPath)) {
Write-Host "❌ 未找到 VHDX 文件: $vhdxPath" -ForegroundColor Red
exit 1
}
# 2. 显示当前大小
$originalSize = [math]::Round((Get-Item $vhdxPath).Length/1GB, 2)
Write-Host "当前 VHDX 文件大小: $originalSize GB" -ForegroundColor Yellow
# 3. 确认操作
$confirm = Read-Host "`n是否继续压缩?这将停止 Docker Desktop (Y/N)"
if ($confirm -ne 'Y' -and $confirm -ne 'y') {
Write-Host "操作已取消" -ForegroundColor Yellow
exit 0
}
# 4. 停止 Docker Desktop
Write-Host "`n停止 Docker Desktop..." -ForegroundColor Yellow
Stop-Process -Name "Docker Desktop" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 3
# 5. 关闭 WSL
Write-Host "关闭 WSL..." -ForegroundColor Yellow
wsl --shutdown
Start-Sleep -Seconds 5
# 6. 压缩 VHDX
Write-Host "`n开始压缩 VHDX 文件..." -ForegroundColor Yellow
Write-Host "这可能需要几分钟,请耐心等待..." -ForegroundColor Cyan
$diskpartScript = @"
select vdisk file="$vhdxPath"
attach vdisk readonly
compact vdisk
detach vdisk
"@
$diskpartScript | diskpart
# 7. 显示压缩后大小
Start-Sleep -Seconds 2
$newSize = [math]::Round((Get-Item $vhdxPath).Length/1GB, 2)
$saved = $originalSize - $newSize
Write-Host "`n=== 压缩完成 ===" -ForegroundColor Green
Write-Host "原始大小: $originalSize GB" -ForegroundColor Yellow
Write-Host "压缩后大小: $newSize GB" -ForegroundColor Green
Write-Host "节省空间: $saved GB" -ForegroundColor Cyan
# 8. 询问是否重启 Docker
$restart = Read-Host "`n是否重启 Docker Desktop? (Y/N)"
if ($restart -eq 'Y' -or $restart -eq 'y') {
Write-Host "`n启动 Docker Desktop..." -ForegroundColor Yellow
Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe"
Write-Host "Docker Desktop 正在启动..." -ForegroundColor Green
}
Write-Host "`n✅ 操作完成!" -ForegroundColor Green