当我使用PowerShell 5.1创建自动化脚本时,我遇到了一个问题——在作业的脚本块中,Start-Process之后的代码将没有机会执行。这里是一个简单的重现:
第一步 >> 准备一个用于Start-Process的.cmd文件,callee.cmd中的代码如下:
预期值应该是“失败”。 我的代码有问题吗,还是我使用任务的方式不正确?
第一步 >> 准备一个用于Start-Process的.cmd文件,callee.cmd中的代码如下:
@echo off
echo "Callee is executing ..."
exit /B 0
第二步 >> 准备 PowerShell 代码,
$scriptBlock = {
$res = Start-Process -FilePath "cmd.exe" -Wait -PassThru -NoNewWindow -ArgumentList "/c .\callee.cmd"
throw "ERROR!"
}
$job = Start-Job -ScriptBlock $scriptBlock
Wait-Job $job
Receive-Job $job
Write-Host($job.State)
第三步 >> 运行PowerShell脚本,屏幕上的输出结果是:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Completed True localhost ...
Completed
预期值应该是“失败”。 我的代码有问题吗,还是我使用任务的方式不正确?
String[]
类型。每个参数都需要新的[String]
。另外,为什么每次运行都要抛出一个错误? - Maximilian Burszley$res = Start-Process -FilePath "cmd.exe" -Wait -PassThru -NoNewWindow -ArgumentList ".\callee.cmd","/c"
,你会发现它可以工作。或者将-NoNewWindow
更改为-WindowStyle Hidden
。 - TheMadTechnician