【发布时间】:2023-01-13 05:53:59
【问题描述】:
我有一个作业设置来运行/调用输出文件的脚本。该代码在单独运行时工作正常。我已验证作业未被阻止并成功完成。但是,从作业调用脚本时不会生成任何文件。我什至在其他地方做了一些非常相似的事情,没有问题,事实上,我从另一个类似的设置中提取了这段代码。无论如何,这就是我所拥有的:
作为作业运行时,没有文件输出:
$McShieldCheckerJob = Start-Job -ScriptBlock {
E:\ICSScoreCardUtilityPack\ServiceAndProcessCheckerV1.0.ps1 -ServicesAndOrProcesses 'McShield' -Comps 'COMP15' `
-OutputMode 1 -OutputFile $McShieldCheckOutputFileName -GroupByMachine "N" -AsJob "Y"
} -Name McShieldCheckerJob
当不作为作业运行时,文件按预期输出。
E:\ICSScoreCardUtilityPack\ServiceAndProcessCheckerV1.0.ps1 -ServicesAndOrProcesses 'McShield' -Comps 'COMP15' `
-OutputMode 1 -OutputFile $McShieldCheckOutputFileName -GroupByMachine "N" -AsJob "Y"
很难理解为什么这不会像工作一样工作,而不是工作。同样,我已经通过Get-Job 和Receive-job 验证了作业没有被阻止并且正在成功完成。
编辑:
变量 $McShieldCheckOutputFileName 似乎无法在作业的脚本块中解析。如果我使用字符串文字 [for $McShieldCheckOutputFileName] 我没有问题。 (经过更多的故障排除后,我能够确定作为作业运行时缺少输出文件是由于我的输出文件名的空值。)所以,我可以很容易地解决这个问题,但仍然如此似乎很好奇无法在脚本块中解析变量?必须是一个范围的东西...
【问题讨论】:
标签: powershell