我有一个powershell 脚本,我需要先执行以调用 .cmd 文件来完成网络下载,然后我需要处理下载的数据。下面是我的命令
Runas /savecred /profile /user:myuser "cmd /c C:\Users\myuser\myfile.cmd"
ECHO $Hello
从上面的命令,myfile.cmd
下载一个文件,然后我需要处理它。此处 powershell 不等待文件下载并开始执行以下命令。如何让它等待文件下载?
我有一个powershell 脚本,我需要先执行以调用 .cmd 文件来完成网络下载,然后我需要处理下载的数据。下面是我的命令
Runas /savecred /profile /user:myuser "cmd /c C:\Users\myuser\myfile.cmd"
ECHO $Hello
从上面的命令,myfile.cmd
下载一个文件,然后我需要处理它。此处 powershell 不等待文件下载并开始执行以下命令。如何让它等待文件下载?
你需要等待runas
:
$cmd = 'runas'
$args = '/savecred','/profile','/user:myuser','cmd /c C:\Users\myuser\myfile.cmd'
Start-Process $cmd $args -Wait
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)