2
我有一個簡短的.cmd文件,我想作爲我的部署過程的一部分運行。不幸的是.cmd文件需要管理員權限。是否可以從rake內部獲得管理員權限,還是需要以管理員身份啓動shell?如何以管理員身份在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