Cela fonctionne pour moi sur toutes les plateformes, y compris Windows 10. Mes besoins sont simples, vous pouvez peut-être adapter l'approche si vous en avez besoin. puissance .
Je suis arrivé avec un petit script nommé, sudo.cmd
nommé pour la commande sudo de Linux. Cela fonctionne assez bien, je pense. J'ai décrit les exigences, les étapes à suivre et le script est près du bas avec un exemple. Tout d'abord, un mot d'avertissement.
AVERTISSEMENT : La commande s'exécute par défaut dans le répertoire système de Windows. Vous voudrez cd
dans un endroit sûr d'abord.
exigences :
- Exécuter une commande avec un privilège d'administrateur à partir de Windows .CMD
ou le cmd-Shell.
- nécessitent les vérifications normales des privilèges de Windows sur la commande
- En d'autres termes, la commande ne fonctionnera PAS à moins que je ne sois déjà connecté avec un compte privilégié.
- Exécutez la commande avec l'autorisation de l'administrateur et continuez quand appelée à l'intérieur d'un script. Attendez donc que la commande se termine.
- Soyez simple pour que cela fonctionne toujours
- Ne pas avoir à saisir un mot de passe à chaque fois, si je suis déjà connecté.
- Un meilleur méthode serait si je peux entrer le mot de passe une fois comme le fait le vrai
sudo
sous Linux.
solution :
- Créer une commande script pour exécuter tous les arguments passés,
sudo.cmd
- Créez un raccourci Windows pour la commande script nommez-le :
sudo.lnk
.
- Mettez le
sudo
dans votre PATH Windows pour qu'il soit visible.
- Modifiez les propriétés du raccourci, faites le
Start in:
chemin vide.
- Cliquez sur le [
Advanced
Bouton -- Vérifier Run as Administrator
-
Pour permettre des raccourcis dans votre chemin d'accès Windows, utilisez la variable d'environnement PATHEXT, c'est-à-dire
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
Lorsque vous tapez sudo dir
sur la ligne de commande, Windows affichera le
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
Fenêtre pop-up de contrôle d'accès. Si vous cliquez sur "[ NO
]", rien ne se passera. Windows affichera un " Access is denied.
" message.
Lorsque vous cliquez sur "[ YES
]", alors la commande de répertoire s'exécute avec un privilège élevé. Bien sûr, vous voulez probablement quelque chose de plus intéressant comme l'arrêt ou l'interrogation d'un service :
sudo sc query SDRSVC
SDRSVC est le nom de service pour "Windows Backup service", ce qui montre ce qui suit dans une fenêtre Cmd séparée :
[sudo]
administrator
---------------
sc query SDRSVC
SERVICE_NAME: SDRSVC
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
[done]
Press any key to continue . . .
En sudo.cmd
Le script lui-même est très basique. Comme je l'ai dit, mes besoins sont simples. Je veux juste arrêter et démarrer les services pendant que je déploie le code pour les tests.
sudo.cmd
:
@echo off
@rem sudo.cmd
cd /d %temp%
@echo.
@echo. administrator
@echo. ---------------
cd
@echo.
@rem _________________________________________________
@rem -- Print usage . . .
@if [""] ==["%~1"] goto USAGE
@if /i ["--HELP"]==["%~1"] goto USAGE
@rem _________________________________________________
@rem
@echo. %*
@rem
%*
@rem
set EXIT_STATUS=%ERRORLEVEL%
@rem -- -- -- -- --
@echo.
@echo. [done]
@rem ______________________________________________________
:Exit
@echo.
@pause
exit /b %EXIT_STATUS%
@rem ______________________________________________________
:USAGE
@echo.
@echo ^Usage:
@echo. sudo ^<complete command line^>
@echo.
@echo. Attempts to rune the: ^<complete command line^>
@echo. under Administrator priviliges. Relies on Windows
@echo. prompt for elevated privileges.
@rem ______________________________________________________
@goto Exit
En pause
La commande attend que vous passiez en revue les résultats. Si vous prenez pause
la fenêtre d'administration se ferme et vous ne savez pas si la commande a fonctionné ou non. Le site ERRORLEVEL
de la commande est également renvoyée.