如何以管理员身份在rake任务中运行shell命令?

时间:2013-02-14 16:12:31

标签: windows shell rake

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

1 个答案:

答案 0 :(得分:1)

您可以尝试runas命令。我不知道您的佣金任务是什么样的,但如果您正在运行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关闭时运行...然后,您不必执行任何操作,因为默认情况下您的所有提示都是Admin。