use*_*716 9 powershell scheduled-tasks wait start-process windows-server-2008-r2
我有一个脚本,我想作为一个预定的任务运行,但它没有做它应该做的事情.我正在尝试使用Start-Process和-Wait开关调用可执行文件,然后再继续.线是
Start-Process -FilePath"C:\ Pfx Engagement\Admin\Utilities\Backup Restore\BackupRestoreUtil.exe"-ArgumentList"/ f
"$backup_directory"" - Wait
如果我从命令提示符调用它,即:
powershell.\ script.ps1
有用.它运行命令并在继续之前等待它完成.该命令完成后必须运行的脚本还有更多内容.问题是,当它是一个计划任务时,它不会等待.做一些基本的故障排除,我首先尝试使用名为"Scripts"的计划任务帐户打开带有runas的cmd窗口.所以我跑了
runas/env/user:脚本cmd
使用任务帐户打开命令提示符窗口.从那个命令提示符,我再次尝试"powershell.\ script.ps1",这一次,它不会等待.它运行命令并在命令完成之前立即继续运行.所以我认为这可能是"Scripts"帐户的一个问题,直到我用runas Administrator打开一个新的命令提示符
runas/env/user:Administrator cmd
当我从此管理员命令提示符调用脚本时,也会忽略-Wait开关,并且在调用脚本后立即移动脚本而不等待它完成.
关于这一点的奇怪之处在于,当我从管理员帐户从命令提示符调用它而不执行runas时,它可以工作.相同的帐户,两个不同的结果.关于这里到底发生了什么的任何想法,同样重要的是,如何解决它?
操作系统是Server 2008 R2,运行PowerShell 3.0
不能告诉你它为什么这样做,但我认为这可能会解决它:
$proc = Start-Process -FilePath "C:\Pfx Engagement\Admin\Utilities\Backup Restore\BackupRestoreUtil.exe" -ArgumentList "/f "$backup_directory"" -Passthru
do {start-sleep -Milliseconds 500}
until ($proc.HasExited)
Run Code Online (Sandbox Code Playgroud)
-Passthru开关将使其返回进程的Process对象,您可以测试该进程以查看进程何时退出.
| 归档时间: |
|
| 查看次数: |
17119 次 |
| 最近记录: |