Powershell pentaho厨房出口代码工作不正常
我正在通过PowerShell脚本执行我的作业,但是厨房出口返回代码似乎不起作用。。。 根据我在下面阅读的文档,是厨房的返回代码Powershell pentaho厨房出口代码工作不正常,powershell,pentaho-data-integration,Powershell,Pentaho Data Integration,我正在通过PowerShell脚本执行我的作业,但是厨房出口返回代码似乎不起作用。。。 根据我在下面阅读的文档,是厨房的返回代码 0=作业/转换运行时没有问题 1=处理过程中发生错误 2=加载/运行作业/转换期间发生意外错误。基本上,这可能是XML格式中的错误、读取文件时的错误,也可能表示存储库连接存在问题 3=无法连接到数据库、打开文件或其他 初始化错误 7=无法从XML或存储库加载作业/转换;基本上,可能是插件/文件夹中的一个插件编写不正确或不兼容 8=加载步骤或插件时出错(加载
- 0=作业/转换运行时没有问题
- 1=处理过程中发生错误
- 2=加载/运行作业/转换期间发生意外错误。基本上,这可能是XML格式中的错误、读取文件时的错误,也可能表示存储库连接存在问题
- 3=无法连接到数据库、打开文件或其他 初始化错误
- 7=无法从XML或存储库加载作业/转换;基本上,可能是插件/文件夹中的一个插件编写不正确或不兼容
- 8=加载步骤或插件时出错(加载其中一个插件时出错)
- 9=命令行使用情况打印
$FilePath = 'C:\pdi-ce-8.1.0.0-371\data-integration\kitchen.bat' $ArgumentList = '-file=C:\pdi_debug\debug.kjb -level=MINIMAL >> C:\pdi_debug\bat.log' $PDIProcess = Start-Process -Filepath $FilePath -ArgumentList $ArgumentList -Wait -PassThru Write-host "The Exit code from Kitchen is " $LastExitCode If($LastExitCode -eq 0) #This doesn't seem to correctly get the exit code we are wanting :-/ { $EMAIL_SUBJECT='INT: Pentaho_J_load SUCCEEDED' } Else { $EMAIL_SUBJECT='INT: Pentaho_J_load FAILED'
- 要同步执行控制台应用程序或批处理文件并捕获其输出/检查其退出代码,请直接调用它们(
或c:\path\To\some.exe…
),不要使用&$exePath…
-请参阅启动进程
- 使用时,获取流程退出代码的唯一方法是通过流程信息对象(类型)
由
开关及其-PassThru
属性返回(带有.ExitCode
,可以立即访问此属性;如果没有它, 必须使用-Wait
,或轮询.WaitForExit()
财产).hasExit
- 相反,只有在直接调用外部程序之后才设置(通过直接调用它,或者-如果路径需要引用和/或涉及变量引用-通过
,调用)&
- 使用时,获取流程退出代码的唯一方法是通过流程信息对象(类型)
由
- 在Windows PowerShell中:“Unicode”(UTF-16LE)
- 在PowerShell(核心)(v6+):无BOM的UTF-8
- 要同步执行控制台应用程序或批处理文件并捕获其输出/检查其退出代码,请直接调用它们(
或c:\path\To\some.exe…
),不要使用&$exePath…
-请参阅启动进程
- 使用时,获取流程退出代码的唯一方法是通过流程信息对象(类型)
由
开关及其-PassThru
属性返回(带有.ExitCode
,可以立即访问此属性;如果没有它, 必须使用-Wait
,或轮询.WaitForExit()
财产).hasExit
- 相反,只有在直接调用外部程序之后才设置(通过直接调用它,或者-如果路径需要引用和/或涉及变量引用-通过
,调用)&
- 使用时,获取流程退出代码的唯一方法是通过流程信息对象(类型)
由
- 在Windows PowerShell中:“Unicode”(UTF-16LE)
- 在PowerShell(核心)(v6+):无BOM的UTF-8
$LASTEXITCODE
:
C:\pdi-ce-8.1.0.0-371\data integration\kitchen.bat-file=C:\pdi\u debug\debug.kjb-level=MINIMAL>>C:\pdi\u debug\bat.log
注意:这将使PowerShell附加到(>
)文件C:\pdi\u debug\bat.log
,这意味着始终使用[1]以下字符编码:
cmd.exe
执行追加,请改为通过cmd/c
调用批处理文件:
cmd/c'c:\pdi-ce-8.1.0.0-371\data integration\kitchen.bat-file=c:\pdi\u debug\debug.kjb-level=MINIMAL>>c:\pdi\u debug\bat.log'
注意:由于当从外部调用cmd.exe
时,cmd.exe
如何中继批处理文件设置的退出代码的问题,调用批处理文件最可靠的方法是使用cmd/c
并将&exit
附加到命令字符串中-请参阅
[1] 在PowerShell 5.1及更高版本中,可以控制
/>
使用的默认编码,尽管方式不明显:请参阅。$LASTEXITCODE
:
C:\pdi-ce-8.1.0.0-371\data integration\kitchen.bat-file=C:\pdi\u debug\debug.kjb-level=MINIMAL>>C:\pdi\u debug\bat.log
注意:这将使PowerShell附加到(>
)文件C:\pdi\u debug\bat.log
,这意味着始终使用[1]以下字符编码:
cmd.exe
执行追加,请改为通过cmd/c
调用批处理文件:
cmd/c'c:\pdi-ce-8.1.0.0-371\data integration\kitchen.bat-file=c:\pdi\u debug\debug.kjb-level=MINIMAL>>c:\pdi\u debug\bat.log'
注意:由于当从外部调用cmd.exe
时,cmd.exe
如何中继批处理文件设置的退出代码的问题,调用批处理文件最可靠的方法是使用cmd/c
并将&exit
附加到命令字符串中-请参阅
[1] 在PowerShell 5.1及更高版本中,可以控制
/>
>>>使用的默认编码,虽然不是很明显:请参见。尝试$PDIProcess.ExitCode>而不是$LASTEXITCODE
是已尝试此操作,但仍不走运…尝试$PDIProcess.ExitCode>而不是$LASTEXITCODE
是已尝试此操作,但仍不走运。。。