How do I run a shell command inside a rake task as administrator?
我有一个简短的.cmd文件,我希望它作为部署过程的一部分运行。很遗憾,.cmd文件需要管理员权限。是否可以从rake中获得管理员权限,或者是否需要以admin身份启动shell?
您可以尝试使用
1 2 3 | task :foo do system"runas /profile /user:#{ENV["COMPUTERNAME"]}/Administrator mybatchfile.cmd" end |
唯一的问题是,
irb > system"runas ..."
Enter the password for FOOBAR/Administrator:
在另一个问题上有一个看起来很难看的批/wsh答案。我不知道你把命令放在哪里,这看起来也是交互式的。
您可以尝试使用支持显示UAC提示的PowerShell
1 | PS> Start-Process mybatchfile.cmd -Verb runas |
或者,在耙子里
1 2 3 | task :foo do system"powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -command "Start-Process mybatchfile.cmd -Verb runas"" end |
但这也将启动一个UAC对话。整个过程需要是互动的。不能有交互式生成脚本。您唯一的选择是允许构建服务器在关闭UAC的情况下运行…然后,您不必做任何事情,因为默认情况下,您的所有提示都将是admin。