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

pan*_*dit 7 powershell start-process

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

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

$proc = $(start-process $path -Wait)
Run Code Online (Sandbox Code Playgroud)

请注意,我已尝试使用-NoNewWindow命令,但在我的PowerShell版本中不可用.

任何人都有任何其他想法让它等待这个过程?

JPB*_*anc 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()
Run Code Online (Sandbox Code Playgroud)

您还可以配置启动环境

$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()
Run Code Online (Sandbox Code Playgroud)