修复脚本运行时,SCCM 合规性状态总是 'Compliant'

SCCM Compliance state always 'Compliant' when remediation script runs

我们正在尝试使用 SCCM 2012 R2 运行 对客户端进行一些检查并在需要时修复问题。为此,我们使用 PowerShell 'Script' 选项。

问题描述:

当 'Discovery script' 报告“不合规”时,将启动“补救脚本”。无论“补救脚本”的输出如何,“配置管理器 > 配置”中客户端报告的结果始终为“合规”,即使“补救脚本”未能修复问题并因此产生不同的输出然后在“合规条件规则”中定义。

似乎从选择“补救脚本”的那一刻起,SCCM 合规性状态的输出始终是“合规”。

示例:

- 情况:

当文件夹“C:\Users\me\Downloads\Input_Test”中有文件或文件夹时,“发现脚本”报告“不符合任何内容”并启动“修复脚本”。补救脚本采取行动但无法解决问题,因此它会报告其他内容,然后是“合规”,例如“不合规”。 SCCM 合规状态应该在执行“补救脚本”后说:“不合规”(事实并非如此)。

- PowerShell 发现脚本:

$Paths = Get-ChildItem -Path 'C:\Users\me\Downloads\Input_Test' | Select -ExpandProperty FullName
New-EventLog -LogName Application -Source SCCMCompliance
if ($Paths) {
    $Compliance = 'Non-Compliant'
    Write-EventLog -LogName Application -Source SCCMCompliance -EntryType Warning -EventID 1 -Message “Discovery script: Non-Compliant”
}
else {
    $Compliance = 'Compliant'
    Write-EventLog -LogName Application -Source SCCMCompliance -EntryType Information -EventID 0 -Message “Discovery script: Compliant”
}
$Compliance 

- PowerShell 修复脚本:

Write-Output 'Non-Compliant'
Write-EventLog -LogName Application -Source SCCMCompliance -EntryType Warning -EventID 1 -Message “Remediation script: Non-Compliant $Paths” 

- SCCM 合规条件规则:

- 配置管理器中的 SCCM 合规性状态:

在 Windows 事件查看器中可以轻松跟踪所有步骤。我在这里错过了一些非常明显的东西吗?

在我自己和@DarkLite1 经历了很多痛苦和伤害之后发现 SCCM 在执行补救后不检查合规性状态

从您使用 'Remediation script' 的那一刻起,仅有的 2 种可能的合规状态是:'Compliant' 或 'Exit with error code'。这是在 PowerShell 中使用 'Exit 1'.

完成的

更多信息请看。 https://social.technet.microsoft.com/Forums/en-US/0f0f3e6f-7e9f-4376-a926-fc0b6aef5bf1/sccm-compliance-state-always-compliant-when-remediation-script-runs?forum=configmanagersecurity