修复脚本运行时,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'.
完成的
我们正在尝试使用 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'.
完成的