【问题标题】:How do I run a shell command inside a rake task as administrator?如何以管理员身份在 rake 任务中运行 shell 命令?
【发布时间】:2013-02-14 16:12:30
【问题描述】:

我有一个简短的 .cmd 文件,我想在我的部署过程中运行它。不幸的是,.cmd 文件需要管理员权限。是否可以从 rake 中获得管理员权限,还是需要以管理员身份启动 shell?

【问题讨论】:

标签: windows shell rake


【解决方案1】:

您可以尝试runas 命令。我不知道您的 rake 任务是什么样的,但如果您正在运行 Kernel#system,请尝试

task :foo do 
  system "runas /profile /user:#{ENV["COMPUTERNAME"]}/Administrator mybatchfile.cmd"
end

唯一的问题是,runas 在 shell 中提示输入凭据。所以,你必须是互动的。

irb > 系统“runas ...”
输入 FOOBAR/Administrator 的密码:

关于 SO 的另一个问题有 this nasty looking batch/WSH answer。我不知道你把你​​的命令放在哪里,这看起来也是交互式的。

您可以尝试支持显示 UAC 提示的 PowerShell Start-Process cmdlet。

PS> Start-Process mybatchfile.cmd -Verb runas

或者,在 Rake 中

task :foo do
  system "powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -command \"Start-Process mybatchfile.cmd -Verb runas\""
end

但这也会启动一个 UAC 对话框。整个过程需要互动。您不能拥有交互式构建脚本。您唯一的选择是允许您的构建服务器在 UAC 关闭的情况下运行...然后,您无需执行任何操作,因为默认情况下您的所有提示都是管理员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2013-02-15
    • 1970-01-01
    • 2020-06-23
    • 2023-03-19
    • 2023-03-08
    • 2019-05-17
    相关资源
    最近更新 更多