当用户注销时,进程不会等待完成
我目前正在尝试使用Powershell连接到远程桌面,在该桌面上运行程序,然后注销。 然后我检查通过文件共享运行该命令的输出。 基本上这意味着PowerShell应该在继续之前等待进程完成。
读完之后,我一直在尝试使用Start-Process -Wait选项来确保它等待进程运行。 但是,此脚本必须作为计划任务运行,并且似乎每当脚本在用户未登录时运行,-wait都不起作用,脚本将继续运行而不会完成此过程。 我已经尝试了几种不同的等待选项,但显然我必须在用户注销以测试它时运行计划任务,并且测试会耗尽。 这是我现行的代码执行这个:
$proc = $(start-process $path -Wait)
请注意,我尝试过使用-NoNewWindow命令,但它在PowerShell的版本中不可用。
任何人有任何其他的想法如何使它等待的过程?
你仍然可以通过.net方式启动一个进程并等待他的死亡。 看看Process类,方法和属性。
## Start a process
$Proc = [Diagnostics.Process]::Start("calc.exe")
## Start a processus with param
$Proc = [Diagnostics.Process]::Start("notepad.exe", "Fic.txt")
## Wait for a process death
$Proc.WaitForExit()
您也可以配置启动环境
$credential = Get-Credential
$startInfo = New-Object Diagnostics.ProcessStartInfo
$startInfo.UserName = $credential.Username
$startInfo.Password = $credential.Password
$startInfo.Filename = "powershell"
## Start a process with StartInfo
$startInfo.UseShellExecute = $false
$Proc = [Diagnostics.Process]::Start($startInfo)
## Stop the process
$Proc.Kill()
链接地址: http://www.djcxy.com/p/15863.html
上一篇: Process not waiting for complete when user logged off
下一篇: Clustering in python(scipy) with space and time variables