我正在使用命令行文件(MyTestRepo.cmd)中的以下代码(工作)更新TortoiseGit存储库:
cd c:\MyTortoiseGitRepo
git.exe pull --progress -v --no-rebase "origin"
在PowerShell中,我使用以下代码调用此文件:
$TestPull = Start-Job { Invoke-Item C:\MyTests\MyTestRepo.cmd }
Wait-Job $TestPull
Receive-Job $TestPull
上面的代码确实有效,但它没有等待CMD文件完成运行并退出cmd.exe退出,然后再转到下一行代码。
在继续之前,还有什么更好的方法可以等待cmd.exe进程完成?
答案 0 :(得分:2)
Invoke-Item
不支持等待。您可以使用呼叫运算符&
。例如:
$TestPull = Start-Job { & "C:\MyTests\MyTestRepo.cmd" }
或Start-Process -Wait
:
$TestPull = Start-Job { Start-Process -FilePath "C:\MyTests\MyTestRepo.cmd" -Wait }
当用户执行脚本时, Start-Process
将显示cmd窗口。这可以通过添加-
NoNewWindow`来抑制。