当用户注销时,进程不会等待完成

我目前正在尝试使用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