启动进程 -wait 从使用 runas 打开的命令提示符启动脚本或作为计划任务启动时不起作用



我有一个脚本,我想作为计划任务运行,但它没有做它应该做的事情。在继续之前,我正在尝试用Start Process和-Wait开关调用一个可执行文件。线路为

启动进程-FilePath"C:\Pfx Engagement\Admin\Utilities \Backup Restore\BackupRestoreUtil.exe"-ArgumentList"/f"$backup_directory"-等待

如果我从命令提示符调用它,即:

powershell。\script.ps1

它有效。它运行命令并等待它完成后再继续。在命令完成后,脚本还需要运行更多内容。问题是,当它是一项计划任务时,它不会等待。在进行一些基本的故障排除时,我首先尝试使用名为"脚本"的计划任务帐户打开带有runas的cmd窗口

runas/env/user:Scripts cmd

使用任务帐户打开命令提示符窗口。在命令提示符下,我再次尝试"powershell.\script.ps1",这一次,它没有等待。它运行命令,并在命令完成前立即继续。所以我认为这可能是"脚本"帐户的问题,直到我以管理员的身份打开了一个新的命令提示符

runas/env/user:Administrator cmd

当我从管理员命令提示符调用脚本时,-Wait开关也会被忽略,脚本在调用后会立即移动,而不会等待它完成。

奇怪的是,当我在不执行runas的情况下从Administrator帐户的命令提示符调用它时,它是有效的。相同的账户,两个不同的结果。关于这里到底发生了什么,以及同样重要的是,如何解决它,有什么想法吗?

操作系统是Server 2008 R2,运行powershell 3.0

不能告诉你为什么要这么做,但我认为这可能会解决问题:

$proc = Start-Process -FilePath "C:Pfx EngagementAdminUtilitiesBackup RestoreBackupRestoreUtil.exe" -ArgumentList "/f "$backup_directory"" -Passthru
do {start-sleep -Milliseconds 500}
until ($proc.HasExited)

-Passthrough开关将使其返回进程的Process对象,您可以测试该对象以查看进程何时退出。

最新更新