重要
Microsoft 365 的测试基础将于 2024 年 5 月 31 日过渡到生命周期结束 (EOL) 。 我们致力于与每位客户密切合作,提供支持和指导,使过渡尽可能顺利。 如果有任何疑问、疑虑或需要帮助, 请提交支持请求。
在将 Windows 虚拟机 (VM) 从本地上传到测试基础之前,需要首先准备虚拟硬盘 (VHD) 。 Test Base 仅支持使用 VHD 文件格式并具有固定大小的磁盘的第 2 代 VM。 第 2 代 VM 上的 OS VHD 的最大大小为测试基础上的 128 GiB。
Test Base 支持以下 Windows 版本:
- Windows 10 21H2 或更高版本
- Windows 11 21H2 或更高版本
- Windows Server 2016 或更高版本
可以将 VHDX 文件转换为 VHD,或将动态扩展磁盘转换为固定大小的磁盘,但无法更改 VM 的生成。 需要在主机上启用 Hyper-V 功能以执行 VHD 相关作。
不能缩小 VHD 的物理大小。 如果 VHD 中卷的总大小超过测试库中 (128 GiB) 的最大 OS VHD 大小,则需要在较小的 VHD 中重新创建 VM 或在 VM 中收缩卷,然后再将其转换为 VHD。
需要按照下面的配置步骤作,以确保 VM VHD 与测试基础兼容。
步骤 1:运行 AzureConfig.ps1 脚本以便于配置
为了简化配置步骤,我们准备了配置脚本,可以下载 AzureConfig.ps1 ,并在 VM 上的 PowerShell 中以管理员身份运行脚本。 在运行脚本之前,可能需要配置 PowerShell 执行策略。 运行 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
以绕过当前用户的签名检查。
脚本完成后,重新启动计算机。 ChkDsk 将在系统启动期间运行。 确保报告显示干净且正常的磁盘。 Step-SetLocalPolicy 将设置本地策略,以禁用法律声明,并允许存储用于网络身份验证的密码和凭据。
步骤 2:安装 Windows 更新
为了防止在 VM 预配过程中意外重新启动,建议先安装所有 Windows 更新并重启 VM,然后再将其迁移到测试库。
如果还需要通用化 OS (Sysprep) ,则需要在运行 Sysprep 命令之前更新 Windows 并重启 VM。
步骤 3:确定何时使用 Sysprep
系统准备工具 (sysprep.exe
) 是一个重置 Windows 安装的过程。
Sysprep 会删除所有个人数据并重置多个组件。
通常运行 sysprep.exe
以创建一个模板,该模板可用于部署具有特定配置的其他多个 VM。
该模板称为 通用图像。
如果只想从一个磁盘创建一个 VM,则无需使用 Sysprep。 可以改为从 专用映像 创建 VM。
请注意,Sysprep 要求在运行之前完全解密驱动器。
如果已在 VM 上启用加密,请在运行 Sysprep 之前将其禁用。 脚本 AzureConfig.ps1
应为所有卷禁用 BitLocker。
通用化 VHD
按照以下步骤通用化 VM VHD。 完成这些步骤后,请关闭 VM,在完成 VHD 上传之前不要重新打开 VM。
登录到 Windows VM。
以管理员身份运行 PowerShell。
删除黑豹目录 (
C:\Windows\Panther
) 。将目录更改为
$env:windir\System32\sysprep
。 然后运行sysprep.exe
。在“系统准备工具”对话框中,选择“输入系统现用体验 (OOBE) ”,然后检查通用化。
在 “关闭选项”中,选择“ 关闭”。
选择“确定”。
Sysprep 完成后,关闭 VM。 如果通用化成功,VM 将自动关闭。 请勿使用 “重启” 来关闭 VM。
还可以使用以下 PowerShell 脚本来通用化 VM VHD。 在 PowerShell 中以管理员身份运行脚本。
Remove-Item "$($env:windir)\Panther" -Recurse -Force
Push-Location "$($env:windir)\System32\sysprep"
.\sysprep.exe /generalize /shutdown /oobe
Pop-Location
VHD 现已通用化。
为专用映像安装 Azure 虚拟机代理
若要从 专用映像创建 VM,需要在 Azure Virtual Machine Agent
VM 上安装 。
在 VM 上安装 Azure 虚拟机代理 。 然后,可以在安装代理后启用 VM 扩展。 VM 扩展提供 Test Base 所需的大部分关键功能。
还可以通过以管理员身份运行此 PowerShell 脚本来安装代理。
$installerName = "WindowsAzureVmAgent.msi"
$installerPath = "$PWD\$installerName"
if (Test-Path $installerPath) {
Remove-Item $installerPath -Force
}
$installerDownloadLink = "https://go.microsoft.com/fwlink/?LinkID=394789"
Invoke-WebRequest -Uri $installerDownloadLink -OutFile $installerPath
$logPath = "$PWD\$installerName.log"
Start-Process "msiexec.exe" -ArgumentList "/i `"$installerPath`" /qn /L*v `"$logPath`"" -PassThru -Wait
步骤 4:将虚拟磁盘转换为固定大小的 VHD 并调整其大小
使用此方法可转换 Test Base 的虚拟磁盘并调整其大小:
在开始转换或调整大小过程之前备份 VM。
确保 Windows VHD 在本地服务器上正常工作。 在尝试转换 VM 或将其上传到 Test Base 之前,请修复 VM 中的任何错误。
将虚拟磁盘类型转换为
Fixed
。调整虚拟磁盘的大小以满足测试基础要求:
Azure 中的磁盘的虚拟大小必须一致为 1 MiB。 如果 VHD 不是 1 MiB 的倍数,则需要调整磁盘大小。 当从上传的 VHD 创建映像时,不是 1 MiB 的倍数的磁盘会导致错误。 使用 PowerShell
Get-VHD
cmdlet 显示“Size”(必须在 Azure 中为 1 MiB 的倍数)和“FileSize”,该大小将等于 VHD 页脚的“Size”加上 512 字节。$vhd = Get-VHD -Path C:\Test\TestBaseVM.vhd $vhd.Size % 1MB 0 $vhd.FileSize - $vhd.Size 512
测试基础上的 OS VHD 的最大大小为 128 GiB。
使用 PowerShell 转换磁盘并调整其大小
可以使用 Convert-VHD
和 Resize-VHD
PowerShell cmdlet 将 VM 主机上的虚拟磁盘转换为 Test Base。 以管理员身份运行此 PowerShell 脚本。 将 替换为 <PathToVHD>
要上传的 VHD 的路径。
$vhdFilePath = "<PathToVHD>"
$vhdFileItem = Get-Item $vhdFilePath
$fixedSizeVHDFilePath = $vhdFileItem.Directory.FullName + "\" + $vhdFileItem.BaseName + '-Fixed.vhd'
Convert-VHD -Path $vhdFilePath -DestinationPath $fixedSizeVHDFilePath -VHDType Fixed
$fixedSizeVHD = Get-VHD -Path $fixedSizeVHDFilePath
if ((($fixedSizeVHD.Size % 1MB) -ne 0) -or (($fixedSizeVHD.FileSize - $fixedSizeVHD.Size) -ne 512)) {
$originalSize = $fixedSizeVHD.Size
[UInt64]$originalMB = $originalSize / 1MB
$resizedBytes = ($originalMB + 1) * 1024 * 1024
Resize-VHD -Path $fixedSizeVHDFilePath -SizeBytes $resizedBytes
}
脚本完成后,你将看到一个新的 VHD 文件 -Fixed
,其名称末尾与原始 VHD 文件位于同一文件夹中。
将转换新的 VHD 文件并调整其大小,以便与 Test Base 兼容。 它是 VHD Fixed
类型,大小为 1 MiB 对齐。