我使用start-job创建一个powershell脚本作为后台作业,然后使用start-transcript记录它的输出。以下是两者的代码:
一个
start-job -filepath ./b.ps1 -ArgumentList 'test.txt'
wait-job *
B'/强>
param([parameter(Mandatory = $true)][string]$logfile)
Set-PSDebug -Strict
$ErrorActionPreference = 'Stop'
start-transcript $logfile
输出./a.ps1
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Running True localhost param...
1 Job1 Failed False localhost param...
2 Job2 Failed False localhost param...
输出./b.ps1 -log c:\ test.txt
Transcript started, output file is test.txt
Transcript stopped, output file is C:\test.txt
我还通过设置“echo here”行进行了一些测试,以确认该行正在播放。
答案 0 :(得分:7)
显然,后台作业不支持Start-Transcript。如果你执行Receive-Job来查看脚本输出,你可能会看到如下错误:
This host does not support transcription.
+ CategoryInfo : NotImplemented: (:) [Start-Transcript], PSNotSupportedException
+ FullyQualifiedErrorId : NotSupported,Microsoft.PowerShell.Commands.StartTranscriptCommand
PowerShell 2.0中的BTW我建议您从Set-PSDebug -strict
切换到Set-StrictMode -Version 2.0
- 它会捕获更多潜在错误。