3

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

4

1 回答 1

1

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

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

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

irb > system "runas ..."
输入 FOOBAR/Administrator 的密码:

关于 SO 的另一个问题有这个令人讨厌的批处理/WSH 答案。我不知道你把命令放在哪里,这看起来也是交互式的。

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

PS> Start-Process mybatchfile.cmd -Verb runas

或者,在瑞克

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

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

于 2013-09-19T18:16:43.183 回答