0

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

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

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

4

2 回答 2

1

你需要等待runas

$cmd  = 'runas'
$args = '/savecred','/profile','/user:myuser','cmd /c C:\Users\myuser\myfile.cmd'
Start-Process $cmd $args -Wait
于 2013-09-16T09:00:37.930 回答
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)
于 2018-02-19T13:34:30.100 回答