我有一个有效的PowerShell脚本,可以生成JSON文件并将其转换为CSV。通过ISE手动执行时运行良好。但是,我注意到当我通过任务计划程序执行脚本时,JSON 文件的生成工作正常,但不知何故跳过了它转换为 CSV 的部分。我正在使用提供给我的.bat文件将 JSON 转换为 CSV,我只是在我的 PS 脚本上调用该.bat。
我在某处读到这可能是因为我正在尝试在没有交互式会话的情况下启动一个进程,并且可以通过选中"仅在用户登录时运行"来解决此问题,但我仍然得到相同的结果。
$path = "C:\Apps\ActiveMQanalysis\ConvertJsonFiletoCSV.bat">
启动进程 - 文件路径$path
开始-睡眠-秒 5
编辑:这是批处理文件的内容:
"C:\Program Files\Java\jdk1.8.0_181\bin\java" -cp lib* de.znt.activeMqAnalysis.BrokerStatistics C:\Apps\brokerResults\
编辑:正如大多数用户在这里指出的那样,我确实在.bat文件上添加了一些日志记录,以查看错误来自何处。事实证明,它给了我一个错误,它找不到或加载主类de.znt.activeMqAnalysis.BrokerStatistics
。
默认情况下,Start-Process 在后台运行。 你为什么不直接运行它?
C:AppsActiveMQanalysisConvertJsonFiletoCSV.bat
或者对于变量,您可以使用调用运算符:
& $path
也许蝙蝠文件需要超过 5 秒的时间。您的Start-Process
呼叫会立即返回。您可以添加-Wait
开关以将阻止行为添加到Start-Process
。将代码更改为:
$process = Start-Process -FilePath 'C:AppsActiveMQanalysisConvertJsonFiletoCSV.bat' -Wait -Passthru
$process.ExitCode
-PassThru
返回一个进程对象,该对象将为您提供详细信息,例如进程的退出代码。更多信息可以在Start-Process
文档中找到。