我希望使用凭据从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
我在做什么错?有指针吗?
答案 0 :(得分:3)
简短的回答,您没有做错任何事情。您只是无法做到这一点。
在没有Start-Process -NoNewWindow
的情况下运行-Credential
时,您会说:使用当前已通过身份验证的凭据,运行可执行文件,并在同一控制台窗口中返回结果。
当您使用Start-Process
运行-Credential
时,第一个问题是:如何验证凭据有效?您不能只查看用户名并假设您可以重用现有会话(例如,密码可能不正确)。为了验证凭据,Start-Process
作为凭据对象中提供的用户名/密码启动一个新进程。它执行身份验证检查并获取新的身份验证票证。
由于它是一个新的进程,它在全新的上下文中运行并带有新的身份验证票证,因此它会忽略-NoNewWindow
标志,因为当前控制台无法重定向新进程的输出并启动它作为一个新窗口。