windows - 从通过 SCCM 部署的 Powershell 脚本中运行 SFC.EXE

标签 windows powershell sccm

我正在尝试创建一个 Powershell 脚本,该脚本将部署到更新运行状况不佳的任何节点,以自动执行一些简单任务,而无需在用户工作期间打扰他们。如果从提升的 PS 提示符运行,Powershell 脚本将完美运行。当通过 SCCM 将同一脚本部署到测试机器时,它也运行良好,但有一个异常(exception):它不会调用 SFC.EXE/SCANNOW

我试过使用:

Start-Process -FilePath "${env:Windir}\System32\SFC.EXE"-ArgumentList '/scannow' -Wait -NoNewWindow

Start-Process -FilePath "sfc.exe"-ArgumentList '/scannow' -Wait -NoNewWindow

启动进程 -FilePath "${env:Windir}\System32\SFC.EXE"-ArgumentList '/scannow' -RedirectStandardOutput "C:\SFC-Out.log"-RedirectStandardError "C:\SFC -Err.log"-Wait -NoNewWindow

& "sfc.exe""/scannow"

调用命令 -ScriptBlock { sfc.exe/scannow }

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

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

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

有没有办法做到这一点?抱歉格式不正确,这是我在这个网站上的第一篇文章。

最佳答案

有点晚了,但我遇到了同样的问题。不确定您是否属于这种情况,但原因是使用 SCCM 配置脚本部署以作为 32 位进程运行。该脚本正在部署到 64 位系统。当我在部署配置中取消选中“作为 32 位进程运行”时,SFC 在系统帐户的上下文中正常工作。

关于windows - 从通过 SCCM 部署的 Powershell 脚本中运行 SFC.EXE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44953872/

相关文章:

c# - Windows API 代码包 TaskDialog 缺少图标

powershell v2.0 从批处理 cmd 文件传递​​变量计算机名参数

regex - 如何找出 “-replace”是否真的做了什么

sql-server - 子查询返回超过 1 个值。子查询时不允许这样做

windows - 在 Windows 上观察 gVim 控制台输出

C# - 如何在不使用 winform 的情况下在命令行 exe 中单击鼠标

powershell - 为什么测试路径为PSDrive返回$ false?

batch-file - 将 .link 复制到 64 位 Windows 中更改快捷方式内容

mysql - 193 : %1 is not a valid Win32 application error with Ruby (1. 9.3) 在 Windows 7 上使用 MySQL(5.5) 的 Rails(3.2.3)

c# - 为什么从 C# 应用程序代码调用 Powershell 时返回 null?