PowerShell 使用其他用户凭据启动进程并等待

PowerShell Start-Process with other user credential and wait

我正在使用另一个具有更高权限的用户使用 PowerShell 启动一个进程。

$username = "username" 
$password = "password"
$startWithElevatedRights = "notepad"

$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
Start-Process powershell -Credential $credentials -ArgumentList '-noprofile -command &{Start-Process ‘,  $startWithElevatedRights, ‘ -Wait -verb runas}'

我知道将用户凭据写入代码是一种糟糕的风格,但它是在完全自动化的过程中使用的,所以这是必要的。 我的问题是,我不能等到流程(最后一行代码)完成。内部进程按预期等待。

我试过参数 -Wait, * |等待过程,* | Out-Null,具有 return 值(始终为空) 没有任何效果。

有没有等到进程退出的解决方案? 如果有任何适用于 PowerShell 2.0 的解决方案,那将是最适合我的用例的解决方案。

你可以获得Process object from Start-Process using PassThru parameter and then wait for it to exit.

$username = "username" 
$password = "password"
$startWithElevatedRights = "notepad"

$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
$ps = Start-Process -PassThru -FilePath powershell -Credential $credentials -ArgumentList '-noprofile -command &{Start-Process ',  $startWithElevatedRights, ' -Wait -verb runas}'

$ps.WaitForExit()