我希望使用凭据从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)
会启动一个新窗口。
当我在不使用-Credential
的情况下运行Start-Process
时,我在相同的窗口中得到了预期的结果。
Start-Process $pathNew -NoNewWindow -PassThru -Wait
我做错了什么?有什么建议吗?
发布于 2019-06-05 08:33:12
简而言之,你没有做错任何事情。你只是无法做到这一点。
当您在不使用-Credential
的情况下运行Start-Process -NoNewWindow
时,您会说:使用当前已通过身份验证的凭据,运行可执行文件,并在同一个控制台窗口中返回结果。
当您使用-Credential
运行Start-Process
时,第一个问题是:如何验证凭据是否有效?你不能仅仅看着用户名就认为你可以重用现有的会话(例如,密码可能是错误的)。要验证凭据,Start-Process
将启动一个新进程,作为凭据对象中提供的用户名/密码。它执行身份验证检查并获取新的身份验证票证。
由于它是一个新进程,在一个全新的上下文中运行,具有新的身份验证票证,因此它忽略-NoNewWindow
标志,因为当前控制台无法重定向新进程的输出,并将其作为新窗口启动。
https://stackoverflow.com/questions/56451094
复制相似问题