如何以管理员身份在rake任务中运行shell命令?
问题描述:
我有一个简短的.cmd文件,我想作为我的部署过程的一部分运行。不幸的是.cmd文件需要管理员权限。是否可以从rake内部获得管理员权限,还是需要以管理员身份启动shell?如何以管理员身份在rake任务中运行shell命令?
答
您可以尝试runas
命令。我不知道你的rake任务是什么样子,但如果你正在运行Kernel#system
,尝试
task :foo do
system "runas /profile /user:#{ENV["COMPUTERNAME"]}/Administrator mybatchfile.cmd"
end
唯一的麻烦是,runas
提示凭据正确的,在外壳。所以,你必须互动。
IRB>系统 “运行方式...”
为FOOBAR /输入管理员密码:
有this nasty looking batch/WSH answer从另一个问题上的SO。我不知道你把你的命令放在哪里,这看起来也是互动的。
您可以尝试支持显示UAC提示的PowerShell Start-Process
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关闭的情况下运行......然后,你不必做任何事情,因为你的所有提示默认都是Admin。
请参阅'http://stackoverflow.com/questions/9796028/execute-bash-commands-from-a-rakefile/14360488#14360488'关于如何在耙机中运行任何外部命令。 – Gizmomogwai 2016-12-28 14:08:22