Start-Transcript未遵循$Transcript变量,如何指定转录文件路径?
解决Start-Transcript不使用指定$Transcript路径的问题
问题原因
虽然$Transcript是PowerShell的偏好变量,但**Start-Transcript默认不会自动读取该变量的值**。这个变量的核心作用是存储当前正在运行的转录会话路径,而非作为启动转录的默认路径参数。
两种可行解决方法
方法1:显式使用-Path参数指定路径
直接将构建好的$Transcript变量作为参数传给Start-Transcript,这是最直观且可靠的方式:
$Path = "E:\Scripts\Weekly_Stats\Output\Version6-4\Transcripts" $datetime = Get-Date -F 'yyyyMMddHHmmss' $filename = "Transcript-ComputersUsersAdminsSMB-${datetime}.txt" $Transcript = (Join-Path -Path $Path -ChildPath $filename).ToString() Start-Transcript -Path $Transcript
方法2:通过$PSDefaultParameterValues预设参数
如果希望脚本中所有Start-Transcript调用都自动使用该路径,可以提前设置参数默认值:
$Path = "E:\Scripts\Weekly_Stats\Output\Version6-4\Transcripts" $datetime = Get-Date -F 'yyyyMMddHHmmss' $filename = "Transcript-ComputersUsersAdminsSMB-${datetime}.txt" $Transcript = (Join-Path -Path $Path -ChildPath $filename).ToString() # 为Start-Transcript设置默认Path参数 $PSDefaultParameterValues['Start-Transcript:Path'] = $Transcript Start-Transcript
补充说明
$Transcript变量主要用于查询当前活动转录的路径(比如运行Get-Variable Transcript查看正在录制的文件位置),而非预先指定启动路径。- 无人值守脚本中优先推荐方法1,避免因参数默认值冲突导致意外问题。
内容的提问来源于stack exchange,提问作者sailingbikeruk
相关产品推荐
相关产品推荐

