在PowerShell中执行下一个命令之前等待命令完成

时间:2013-09-16 05:44:22

标签: powershell

我有一个 powershell脚本我需要首先执行调用.cmd文件来完成网络下载,然后我需要处理下载的数据。以下是我的命令

Runas /savecred /profile /user:myuser "cmd /c C:\Users\myuser\myfile.cmd"
ECHO $Hello

从上面的命令,myfile.cmd下载文件,然后我需要处理它。在这里,powershell不会等待文件下载并开始执行以下命令。如何让它等待文件下载?

2 个答案:

答案 0 :(得分:0)

您需要等待runas

$cmd  = 'runas'
$args = '/savecred','/profile','/user:myuser','cmd /c C:\Users\myuser\myfile.cmd'
Start-Process $cmd $args -Wait

答案 1 :(得分:0)

Runas.exe不会等待其子进程退出,因此没有直接的方法来执行此操作。

在循环中使用SysInternals的pslist或其他类似的解决方法,但如果有多个具有相同名称的进程,这些解决方案将会脱轨。

这一行:

runas /savecred /profile /user:user "X:\Path\MyProgram.exe"
do {
    Start-Sleep -Seconds 1
    pslist MyProgram >$null 2>&1
} while ($LASTEXITCODE -eq 0)