2013-02-14 108 views
2

我有一個簡短的.cmd文件,我想作爲我的部署過程的一部分運行。不幸的是.cmd文件需要管理員權限。是否可以從rake內部獲得管理員權限,還是需要以管理員身份啓動shell?如何以管理員身份在rake任務中運行shell命令?

+0

請參閱'http://stackoverflow.com/questions/9796028/execute-bash-commands-from-a-rakefile/14360488#14360488'關於如何在耙機中運行任何外部命令。 – Gizmomogwai 2016-12-28 14:08:22

回答

1

您可以嘗試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。

相關問題