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