用户注销时,PowerShell 1.0 Start-Process 未等待完成

标签 powershell start-process

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

关于用户注销时,PowerShell 1.0 Start-Process 未等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18706653/

相关文章:

powershell - RedirectStandardError $logFile 并 append ?

powershell - 使用 PowerShell 的 Start-Process cmdlet 传递变量参数

powershell - Get-ChildItem -force 在“我的文档”文件夹和其他连接点上报告 "Access Denied"

windows - Powershell 远程 PSSession 失败 - 域管理员帐户

sql - PowerShell - 格式化 SQL 输出并将其写入 CSV

c# - 从代码运行 PsExec 进程的问题

Powershell 删除引号参数

excel - Powershell - 添加捕获以在没有 Excel 进程的情况下进行拾取

powershell - 使用 powershell 浏览文件夹树

PowerShell:启动进程Firefox,他怎么知道路径?