【问题标题】:Powershell Start-Process -NoNewWindow not working with -CredentialsPowershell Start-Process -NoNewWindow 不与 -Credentials 一起使用
【发布时间】:2019-06-05 08:33:12
【问题描述】:

我希望使用凭据从 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

我做错了什么?任何指针?

【问题讨论】:

  • 这是我机器上的行为。我想这是因为你的 shell 加载了一个特定于你的环境。如果您在自己的内部启动了其他人的环境,则会与用户范围发生冲突。我建议使用您指定的凭据使用 Start-Process 启动 PowerShell。然后从那里启动 .exe。
  • @AdminOfThings 谢谢。我会试试的。

标签: powershell


【解决方案1】:

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

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

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

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

【讨论】:

  • 知道了。谢谢@HAL9256
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2019-08-16
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
相关资源
最近更新 更多