我目前正在尝试使用Powershell连接到远程桌面,在该桌面上运行程序,然后注销。然后我检查在文件共享上运行该命令的输出。基本上这意味着PowerShell应该在继续之前等待该过程完成。
在阅读之后,我一直在尝试使用Start-Process -Wait选项来确保它等待进程运行。但是,此脚本必须作为计划任务运行,并且似乎无论何时在用户未登录时运行脚本,-wait都不起作用,并且脚本将继续运行而不会完成该过程。我已经尝试了几种不同的等待选项,但显然我必须在用户注销以测试它时运行计划任务,并且测试变得筋疲力尽。这是执行此操作的当前代码行:
$proc = $(start-process $path -Wait)
请注意,我已尝试使用-NoNewWindow命令,但在我的PowerShell版本中无法使用它。
对于如何让它等待这个过程,任何人都有任何其他想法吗?
答案 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()