【问题标题】:Running cmd.exe through Start-Process with -Verb RunAs and then automatically running a command as Administrator使用 -Verb RunAs 通过 Start-Process 运行 cmd.exe,然后以管理员身份自动运行命令
【发布时间】:2019-11-16 03:00:08
【问题描述】:

从非提升的 PowerShell 开始,我希望能够以管理员身份启动命令提示符,然后以管理员身份运行特定工具,最终用于右键单击菜单选项。

到目前为止我已经尝试过了:

Start-Process cmd -ArgumentList '/k tool.exe' -Verb RunAs

虽然这确实以管理员身份启动了命令提示符,但它首先在非提升命令提示符下运行 tool.exe,然后然后切换到管理员命令提示符。我怎样才能让它以管理员身份运行 tool.exe?

编辑:正如@mklement0 指出的那样,命令提示符实际上是以管理员身份运行的,只是没有立即反映在窗口标题中(可能是一个错误?)。因此,上面的示例确实按预期工作。

【问题讨论】:

  • 这能回答你的问题吗? windows core run command with elevated privileges
  • @iRon,您指的是提到 Enter-AdminPSSession.ps1 的部分吗?这似乎可行,但我希望使用 Start-Process 找到一个简单的解决方案。如果我们可以确认这是不可能的,我可以研究其他选项。我感到困惑的那部分是,尽管在我的示例中以管理员身份调用,但命令提示符以某种方式首先以非管理员身份运行 tool.exe,这似乎不是预期的行为,所以我想也许我做错了什么.
  • @mklement0 在对我如何使用它的细节进行了大量调查之后,我认为你是对的,它实际上一直在运行海拔。有点巧合的是,我在没有提升的情况下运行 tool.exe 时遇到了同样的错误,但实际上这是由其他原因引起的,并且命令提示符窗口标题没有立即反映这一事实管理员提升让我失望。感谢您帮助我了解这一点!我在下面接受了你的回答。

标签: windows powershell cmd administrator


【解决方案1】:

我认为你的问题的前提是不正确的,你的问题可能是因为新打开的窗口的窗口标题是仅在窗口打开后不久更新以反映管理员状态

但是,与窗口相关的进程从一开始就被提升了,如以下命令所示:

# Opens an elevated cmd session in a new window and executes
# `net session`, which only succeeds with elevation.
Start-Process cmd -ArgumentList '/k net session' -Verb RunAs

net session 命令成功,意味着进程正在以提升的方式运行(无论窗口标题需要多长时间才能反映这一事实)。

【讨论】:

  • 很高兴听到这个消息,@anosmia;感谢上述评论中的澄清。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2011-12-03
  • 2021-12-29
相关资源
最近更新 更多