是否有人知道是否存在注册表标志可以用来检测 Windows 恢复环境是否启用或禁用?
目前,我在应用程序部署的“检查要求”部分使用此脚本:
<#
.SYNOPSIS
Detects if a Windows Recovery Partition needs to be setup
.DESCRIPTION
Uses powershell to check if WinRE is enabled
.NOTES
To be used in the Endpoint Manager and as the remidiation script
#>
try {
$reagentcOutput = reagentc /info
# Check if Recovery is already enabled
if ($reagentcOutput -match "Enabled") {
Write-Output "Enabled"
exit 0
} else {
Write-Output "Not"
exit 0
}
}
catch {
Write-Host "An Error occured! Hopefully this helps: $reagentcOutput"
Write-Host "ERROR: at $($_.InvocationInfo.ScriptLineNumber)"
Write-Error "Message: " $_.Exception.Message
Write-Host "StackTrace: "
Write-Host $_.Exception.StackTrace
Write-Host ""
exit 1
}
exit 0
但问题似乎是 Intune 未按照我期望的方式评估此脚本的返回值,或者脚本的语法或执行存在其他问题。我找不到任何可行需求脚本的示例。
本质上,我只是想添加一个“要求”,即在安装我的应用程序(配置分区并移动 WinRE img 文件)之前尚未启用 WinRE
答案1
在比较使用 Reagentc 命令禁用和启用 WinRE 的结果后,我没有观察到注册表修改。但是,我发现文件夹内部存在差异
C:\Windows\System32\Recovery
。
主要有两个变化:
- 启用时,文件
Winre.wim
存在于文件夹中。禁用时,文件不存在。 - 文件的内容
ReAgent.xml
已经改变。
以下是关于的差异ReAgent.xml
。我只包括已更改的 XML 标签。
已启用
<WinreBCD id="{ee2fae51-df9e-11ea-8242-9cb6d0fa6b80}"/>
<WinreLocation path="\Recovery\WindowsRE" id="0" offset="493646512128" guid="{a588d765-1bef-40cb-a90f-0b8cdafcd122}"/>
<InstallState state="1"/>
<ScheduledOperation state="5"/>
已禁用
<WinreBCD id="{00000000-0000-0000-0000-000000000000}"/>
<WinreLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}"/>
<InstallState state="0"/>
<ScheduledOperation state="4"/>
您应该检查您的计算机上的情况,特别是那些没有 WinRE 的计算机,但我的猜测是检查应该类似于此:
- 如果该文件夹
C:\Windows\System32\Recovery
不存在或ReAgent.xml
丢失,则 WinRE 可能未安装。 - 如果 的内容
ReAgent.xml
有WinreLocation path=""
或InstallState state="0"
,则 WinRE 可能已被禁用。