我正在寻找一种方法来重新应用 wim 映像,而不会丢失 Windows PE 中的任何用户数据。到目前为止,我的脚本如下所示:
$TSProgressUI = New-Object -COMObject Microsoft.SMS.TSProgressUI
$TSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment
$OSDDownload = $TSEnv.Value("osDownload01")
$LogsDirectory = $TSEnv.Value("_SMSTSLogPath")
$wimImagePath = "$OSDDownload\install.wim"
$systemDriveLetter = "S"
Remove-Item -Path "$($env:_OSDDetectedWinDrive)Program Files\WindowsApps" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$($env:_OSDDetectedWinDrive)ProgramData\Microsoft\Windows\AppRepository" -Recurse -Force -ErrorAction SilentlyContinue
$wimIndex = (Get-WindowsImage -ImagePath $wimImagePath | Where-Object {$_.ImageName -eq "Windows 10 Enterprise"} | select -property ImageIndex).ImageIndex
dism /Apply-Image /ImageFile:$wimImagePath /index:$wimIndex /ApplyDir:$($env:_OSDDetectedWinDrive)
#dism /Image:$($env:_OSDDetectedWinDrive) /Cleanup-Image /RestoreHealth /Source:$wimImagePath /LimitAccess
Get-Partition | Where-Object {$_.GptType -eq "{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}"} | Set-Partition -NewDriveLetter $systemDriveLetter
cmd /c """$($env:_OSDDetectedWinDrive)Windows\System32\bcdboot.exe"" ""$($env:_OSDDetectedWinDrive)Windows"" /s $($systemDriveLetter): /f UEFI"
但是,我在 apply-image 命令之后尝试的并没有更好,之后我的 Windows 安装会停留在加载屏幕中。如果我进行重置,我会收到消息“计算机意外重新启动或遇到意外错误”。
知道我做错了什么吗?
谢谢 md
好的,我希望它工作的方式不起作用。同时我不想将 21H2 Image 作为额外的升级包添加到 SCCM 中,因为从 20H2 到 21H2 您只需要启用包。
所以这就是我所做的:
首先,我用光盘中的所有安装文件创建了一个新包,但没有 install.wim,我将 boot.wim 替换为 0KB 的 boot.wim 文件。此外,我添加了文件夹 SMSTSPostUpgrade,这是我从之前的升级 TS 中获取的。这包括 SetupComplete.cmd 和 SetupRollback.cmd。但这只是另一种预期的方式,请参阅下面的评论。最后我得到了一个大约 275MB 的包大小。
在我的 SCCM 任务序列中,我执行了以下步骤:
我使用“下载包内容”功能下载了原版安装映像和新创建的安装内容文件。我都用变量保存(osImage; osSetup)
创建硬链接以将 install.wim 添加到安装文件夹。也许你也可以把它移到那里:
"$OSDDownload\install.wim"
我使用源路径 %osSetup01% 和版本索引 3 调用了“升级操作系统”功能(在这种情况下为 Enterprise)
之后,我也可以将我的任务序列用作修复任务序列。
顺便提一句。除了“升级操作系统”功能,我还尝试了一个 powershell 脚本,但我找不到管理重启的方法: