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()
我正在使用另一个具有更高权限的用户使用 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()