PowerShell 1.0 Start-Process在用户注销时不等待完成

时间:2013-09-09 20:40:11

标签: powershell start-process

我目前正在尝试使用Powershell连接到远程桌面,在该桌面上运行程序,然后注销。然后我检查在文件共享上运行该命令的输出。基本上这意味着PowerShell应该在继续之前等待该过程完成。

在阅读之后,我一直在尝试使用Start-Process -Wait选项来确保它等待进程运行。但是,此脚本必须作为计划任务运行,并且似乎无论何时在用户未登录时运行脚本,-wait都不起作用,并且脚本将继续运行而不会完成该过程。我已经尝试了几种不同的等待选项,但显然我必须在用户注销以测试它时运行计划任务,并且测试变得筋疲力尽。这是执行此操作的当前代码行:

$proc = $(start-process $path -Wait)

请注意,我已尝试使用-NoNewWindow命令,但在我的PowerShell版本中无法使用它。

对于如何让它等待这个过程,任何人都有任何其他想法吗?

1 个答案:

答案 0 :(得分:3)

你仍然有.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()