Powershell启动过程-NoNewWindow无法与-Credentials一起使用

时间:2019-06-04 20:44:11

标签: powershell

我希望使用凭据从powershell运行exe。我希望输出在同一窗口中。这就是我的Powershell外观。

Start-Process文档:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

$username = 'user'
$password = 'password'
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
$pathNew = "c:\pathtomyexe\text.exe" 
Start-Process $pathNew -NoNewWindow -Credential ($credentials) -PassThru -Wait

通过-Credential ($credentials)启动一个新窗口。

当我在没有Start-Process的情况下运行-Credential时,在与预期相同的窗口中得到结果。

Start-Process $pathNew -NoNewWindow -PassThru -Wait

我在做什么错?有指针吗?

1 个答案:

答案 0 :(得分:3)

简短的回答,您没有做错任何事情。您只是无法做到这一点。

在没有Start-Process -NoNewWindow的情况下运行-Credential时,您会说:使用当前已通过身份验证的凭据,运行可执行文件,并在同一控制台窗口中返回结果。

当您使用Start-Process运行-Credential时,第一个问题是:如何验证凭据有效?您不能只查看用户名并假设您可以重用现有会话(例如,密码可能不正确)。为了验证凭据,Start-Process作为凭据对象中提供的用户名/密码启动一个新进程。它执行身份验证检查并获取新的身份验证票证。

由于它是一个新的进程,它在全新的上下文中运行并带有新的身份验证票证,因此它会忽略-NoNewWindow标志,因为当前控制台无法重定向新进程的输出并启动它作为一个新窗口。