【问题标题】:Verb RunAs in a Start-Process Powershell command causes an errorStart-Process Powershell 命令中的动词 RunAs 导致错误
【发布时间】:2014-09-08 13:54:05
【问题描述】:

如果我在 Poweshell 脚本文件中运行以下命令($cmd 指的是某些可执行文件):

Start-Process -FilePath $cmd -Verb RunAs Powershell

然后执行OK

但如果我稍微修改一下:

Start-Process -NoNewWindow -FilePath $cmd -Verb RunAs Powershell 

或者像这样:

Start-Process -FilePath $cmd -ArgumentList @("status") -Verb RunAs Powershell 

...然后命令失败并显示以下错误消息:

Start-Process : 参数集无法使用指定的解析 命名参数。

我想知道为什么不接受这种格式,我应该如何修改命令以同时指定参数列表和选项“-Verb RunAs...”

【问题讨论】:

  • 猜测-NoNewWindow-Verb RunAs 不能合并,因为您可以提升当前使用的会话。去看看是不是真的。我读到他们是incompatible
  • 哦,我明白了,这就是原因!感谢您的澄清。如果您将观察结果改写为答案,我可以接受它作为答案。

标签: powershell runas


【解决方案1】:

猜测-NoNewWindow-Verb RunAs 无法组合,因为您无法提升当前使用的会话。

经过进一步调查,您并不是唯一一个对此进行调查的人。我读到它们不兼容here

根据你这样运行它的动机,你可以隐藏窗口

Start-Process "powershell" -Verb "runas" -WindowStyle hidden

您也可以查看PSSessions,它也可以处理此类事情。这可以在同一窗口中启动交互式会话。

【讨论】:

  • 宾果游戏!事实上,这是非常合乎逻辑的。如果可以在不离开当前窗口所代表的会话的情况下提升权限,那就太奇怪了。
  • @VagifAbilov 那么解决方案是什么?
【解决方案2】:

也许this 可以帮到你:

$cmd = 'powershell.exe'
$arguments = "-NoLogo -NoProfile -WindowStyle Maximized"
Start-Process $cmd $arguments -Verb runAs

来自here的另一个例子:

Start-Process powershell -Credential mydomain\mydomainAdmin -ArgumentList '-noprofile -command &{Start-Process notepad -verb runas}'

你能用你的程序和参数试试看,看看效果如何?

【讨论】:

  • 一切正常,但这不是我想要的。我希望能够通过“-NoNewWindow”选项,并且由于某些原因我不能将它与动词结合起来。 ArgumentList 选项也是如此。我试图理解为什么它们不能合并。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多