运行 cmd.exe 到 Start-Process 使用 -Verb RunAs 然后自动 运行 作为管理员执行命令
Running cmd.exe through Start-Process with -Verb RunAs and then automatically running a command as Administrator
从 non-elevated PowerShell 开始,我希望能够以管理员身份启动命令提示符,然后 运行 以管理员身份启动特定工具,最终用于 right-click 菜单选项。
到目前为止我已经试过了:
Start-Process cmd -ArgumentList '/k tool.exe' -Verb RunAs
虽然这确实会以管理员身份启动命令提示符,但它 运行s tool.exe first non-elevated 命令提示符和 then 切换到管理员命令提示符。我怎样才能以管理员身份将它发送给 运行 tool.exe?
编辑:正如@mklement0 指出的那样,命令提示符实际上是 运行 管理员,只是没有立即反映在 window 标题中(可能是错误?)。因此,上面的示例确实按预期工作。
我认为你的问题前提不正确,你可能已经得出问题的结论是因为window标题新打开的 window 的 仅在 window 打开 后不久更新以反映管理员状态。
但是,与 window 相关的进程从一开始就提升了,如以下命令所示:
# 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
命令成功,意味着该过程是 运行 提升(无论 window 标题反映该事实需要多长时间)。
从 non-elevated PowerShell 开始,我希望能够以管理员身份启动命令提示符,然后 运行 以管理员身份启动特定工具,最终用于 right-click 菜单选项。
到目前为止我已经试过了:
Start-Process cmd -ArgumentList '/k tool.exe' -Verb RunAs
虽然这确实会以管理员身份启动命令提示符,但它 运行s tool.exe first non-elevated 命令提示符和 then 切换到管理员命令提示符。我怎样才能以管理员身份将它发送给 运行 tool.exe?
编辑:正如@mklement0 指出的那样,命令提示符实际上是 运行 管理员,只是没有立即反映在 window 标题中(可能是错误?)。因此,上面的示例确实按预期工作。
我认为你的问题前提不正确,你可能已经得出问题的结论是因为window标题新打开的 window 的 仅在 window 打开 后不久更新以反映管理员状态。
但是,与 window 相关的进程从一开始就提升了,如以下命令所示:
# 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
命令成功,意味着该过程是 运行 提升(无论 window 标题反映该事实需要多长时间)。