如何在使用Out-Null时保留PowerShell转录输出?
解决方案
直接使用Out-Null无法实现你的需求,因为它会彻底丢弃命令输出,转录功能自然也无法捕获这些被丢弃的内容。你可以通过以下两种方法达成目标:
方法一:捕获输出后手动写入转录日志
通过变量捕获New-Item的输出,再将输出内容追加到转录日志文件中,同时控制台不会显示任何输出:
Start-Transcript "C:\your\transcript\path.log" # 创建文件并捕获输出,控制台无显示 $createdFile = New-Item -ItemType File -Name "filename.txt" # 将输出转换为字符串并追加到转录日志 $createdFile | Out-String | Add-Content "C:\your\transcript\path.log" Stop-Transcript
方法二:利用信息流实现静默记录
通过设置信息流偏好,让命令输出写入信息流(控制台不显示),但转录功能会自动捕获信息流内容:
Start-Transcript "C:\your\transcript\path.log" # 设置信息流不输出到控制台 $InformationPreference = 'SilentlyContinue' # 将New-Item的输出传入信息流,转录会记录该内容 New-Item -ItemType File -Name "filename.txt" | Write-Information Stop-Transcript
原理说明
PowerShell的Start-Transcript只会捕获发送到宿主(命令行界面)的输出,或者被显式写入日志/特定流的内容。Out-Null会直接截断输出流,导致转录功能无法获取任何相关内容,因此必须改用不丢弃输出的方式来抑制控制台显示。
内容的提问来源于stack exchange,提问作者user24165515
相关产品推荐
相关产品推荐

