7

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

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

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

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

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

4

1 回答 1

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()
于 2013-09-10T06:24:46.910 回答