2013-02-14 5 views
2

J'ai un court fichier .cmd que je voudrais lancer dans le cadre de mon processus de déploiement. Malheureusement, le fichier .cmd nécessite des privilèges d'administrateur. Est-il possible d'obtenir l'autorisation de l'administrateur à partir de rake, ou dois-je démarrer le shell en tant qu'administrateur?Comment exécuter une commande shell dans une tâche rake en tant qu'administrateur?

+0

Veuillez également consulter 'http://stackoverflow.com/questions/9796028/execute-bash-commands-from-a-rakefile/14360488#14360488' pour savoir comment exécuter des commandes externes dans rake. – Gizmomogwai

Répondre

1

Vous pouvez essayer la commande runas. Je ne sais pas ce que votre tâche Rake ressemble, mais si vous utilisez Kernel#system, essayez

task :foo do 
    system "runas /profile /user:#{ENV["COMPUTERNAME"]}/Administrator mybatchfile.cmd" 
end 

Le seul problème est, runas demander les références là dans la coquille. Donc, vous devez être interactif.

> RIR système "runas ..."
Entrez le mot de passe pour FOOBAR/Administrateur:

Il y a this nasty looking batch/WSH answer d'une autre question sur le SO. Je ne sais pas où vous mettez votre commande, cela semble interactif, aussi bien.

Vous pouvez essayer l'applet de commande PowerShell Start-Process qui prend en charge l'affichage d'une invite UAC.

PS> Start-Process mybatchfile.cmd -Verb runas 

Ou, dans Rake

task :foo do 
    system "powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -command \"Start-Process mybatchfile.cmd -Verb runas\"" 
end 

Mais cela lancera également une boîte de dialogue UAC. L'ensemble du processus va devoir être interactif. Vous ne pouvez pas avoir un script de construction interactif. Votre seul choix est de permettre à votre serveur de build de fonctionner avec l'UAC éteint ... alors, vous n'avez rien à faire, parce que toutes vos invites seront Admin par défaut.

Questions connexes