如何使用Start-Transcript仅记录Windows VS Code终端输入及替代方案
实现VS Code终端仅记录输入内容的解决方案
一、调整Start-Transcript命令的配置方法
Start-Transcript默认会同步记录终端的输入和输出内容,你可以根据你使用的PowerShell版本选择对应配置实现仅记录输入:
- 如果你使用PowerShell 7.3及以上版本(VS Code终端可自行指定PowerShell版本),可直接在启动记录时添加
-IncludeOnly Input参数,命令示例如下:Start-Transcript -Path "C:\自定义日志路径\terminal_input.log" -IncludeOnly Input - 如果你使用Windows自带的PowerShell 5.x版本,没有上述专属参数,可在生成完整转录日志后,通过过滤提取输入内容,过滤命令示例:
Get-Content "原始转录日志路径.log" | Where-Object { $_ -match '^PS .*> ' } | Set-Content "仅输入日志.log"
二、更优的VS Code专属实现方案
相比修改Start-Transcript的配置,以下方案适配性更强,不需要手动启停记录:
- 方案1:启用VS Code内置终端输入历史持久化
打开VS Code设置,搜索terminal.integrated.shellIntegration.history,勾选启用后,VS Code会自动单独持久化存储所有终端输入的命令,你可以通过命令面板(快捷键Ctrl+Shift+P)搜索「终端:显示所有历史记录」查看所有输入,也可以在设置中自定义历史存储的条数上限。 - 方案2:通过PowerShell配置文件自动永久记录输入
在VS Code终端中输入notepad $PROFILE打开PowerShell配置文件,添加如下内容后保存,重启终端即可自动记录所有输入到指定日志文件,不会包含输出:# 配置自定义日志存储路径 $InputLogPath = "C:\自定义日志路径\powershell_input_history.log" Register-EngineEvent -SourceIdentifier PowerShell.OnIdle -Action { $latestInput = Get-History -Count 1 if ($latestInput) { "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] $($latestInput.CommandLine)" | Out-File -FilePath $InputLogPath -Append } } - 方案3:使用VS Code第三方扩展
安装支持终端历史记录的本地扩展(如Terminal History),这类扩展默认仅记录终端输入内容,支持搜索、分类、导出,不需要额外修改系统配置。
内容的提问来源于stack exchange,提问作者Bijita Kc
相关产品推荐
相关产品推荐

