You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Start-Transcript至DISM&SFC脚本后日志无内容问题求助

解决Transcript未记录DISM/SFC执行结果的问题

核心原因

用Start-Process搭配-NoNewWindow调用DISM、SFC这类外部命令时,PowerShell的Start-Transcript默认抓不到外部进程的输出流,导致日志里看不到执行结果。

解决方案

方案1:直接调用命令(推荐)

删掉Start-Process,直接在脚本里执行DISM和SFC,Start-Transcript会自动捕获所有输出:

Start-Transcript -Path "C:\DISM_SFC.txt" -Append

# 执行DISM系列命令
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth

# 执行SFC命令
sfc /scannow

Stop-Transcript

方案2:调整Start-Process参数捕获输出

如果必须用Start-Process,可以通过重定向输出到临时文件,再把内容输出到当前会话让Transcript捕获:

Start-Transcript -Path "C:\DISM_SFC.txt" -Append

# 临时输出文件
$tempLog = "C:\temp_dism_sfc.log"

# 执行DISM并捕获输出
Start-Process DISM -ArgumentList "/Online /Cleanup-Image /RestoreHealth" -NoNewWindow -Wait -RedirectStandardOutput $tempLog -RedirectStandardError $tempLog
Get-Content $tempLog | Write-Host
Remove-Item $tempLog -Force

# 执行SFC并捕获输出
Start-Process sfc -ArgumentList "/scannow" -NoNewWindow -Wait -RedirectStandardOutput $tempLog -RedirectStandardError $tempLog
Get-Content $tempLog | Write-Host
Remove-Item $tempLog -Force

Stop-Transcript

方案3:用Invoke-Expression替代Start-Process

Invoke-Expression执行外部命令的输出会被Transcript自动捕获:

Start-Transcript -Path "C:\DISM_SFC.txt" -Append

Invoke-Expression "DISM /Online /Cleanup-Image /RestoreHealth"
Invoke-Expression "sfc /scannow"

Stop-Transcript

验证方式

脚本执行完后打开C:\DISM_SFC.txt,检查是否包含DISM的修复状态、SFC的扫描结果这类关键信息,比如“组件存储修复成功”“Windows资源保护未找到任何完整性冲突”。

内容的提问来源于stack exchange,提问作者Moxadonis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:29:57