在通过SCCM部署的Powershell脚本中运行SFC.EXE

我正在尝试创build一个Powershell脚本,该脚本将被部署到任何正在显示不良更新运行状况的节点,以便自动化一些简单的任务,而不必在工作日中断用户。 如果从提升的PS提示符运行,Powershell脚本完美地工作。 当通过SCCM将相同的脚本部署到testing机器时,它也可以正常运行,但不会调用SFC.EXE /SCANNOW

我试过使用:

 Start-Process -FilePath "${env:Windir}\System32\SFC.EXE" -ArgumentList '/scannow' -Wait -NoNewWindow Start-Process -FilePath "sfc.exe" -ArgumentList '/scannow' -Wait -NoNewWindow Start-Process -FilePath "${env:Windir}\System32\SFC.EXE" -ArgumentList '/scannow' -RedirectStandardOutput "C:\SFC-Out.log" -RedirectStandardError "C:\SFC-Err.log" -Wait -NoNewWindow & "sfc.exe" "/scannow" Invoke-Command -ScriptBlock { sfc.exe /scannow } 

同样,所有这些示例在从提升的PS提示符下运行时都按照预期工作,但是从部署的PowerShell脚本运行时会失败。 当我使用-RedirectStandardOutput时,我检查了文件SFC-Out.log,它读取:

Windows资源保护无法启动修复服务”

我认为这是因为SCCM在SYSTEM上下文中运行程序/脚本而不是用户上下文(或者甚至是提升的用户上下文,但是SYSTEM应该比高级会话更高)。

有没有办法做到这一点? 对不起,格式不好,这是我在这个网站上的第一篇文章。