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 avez besoin d' énergie .
Je suis venu avec un petit script nommé, sudo.cmd
nommé pour la commande Linux sudo. Cela fonctionne assez bien, il pense. J'ai décrit les exigences, les étapes à suivre et le script est près du bas avec un exemple. D'abord un mot d'avertissement.
AVERTISSEMENT : la commande est exécutée par défaut dans le répertoire système Windows. Vous voudrez allercd
dans un endroit sûr en premier.
exigences :
- Exécutez la commande avec un administrateur privilégié à partir de Windows .CMD
ou du cmd-shell.
- nécessite les vérifications normales des privilèges Windows sur la commande
- En d'autres termes, la commande ne fonctionnera PAS sauf si je suis déjà connecté avec un compte privilégié.
- Exécutez la commande avec l'autorisation de l'administrateur et continuez lorsqu'elle est appelée dans un script. Attendez donc que la commande soit terminée.
- Soyez simple pour que ça marche toujours
- Pas besoin d'entrer un mot de passe à chaque fois, si je suis déjà connecté.
- Une meilleure méthode serait si je peux entrer le mot de passe une fois, comme le fait la vraie
sudo
commande sous Linux.
solution :
- Créer un script de commande pour exécuter tous les arguments passés,
sudo.cmd
- Créer un raccourci Windows pour le nom du script de commande , il:
sudo.lnk
.
- Mettez le
sudo
raccourci dans votre fenêtre PATH afin qu'il puisse être vu.
- Editez les propriétés du raccourci,
Start in:
videz le chemin.
- Cliquez sur le
Advanced
bouton [ ] - VérifierRun as Administrator
- Activer les raccourcis dans votre chemin Windows, utilisez la variable d'environnement PATHEXT, à savoir.
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
Lorsque vous tapez sudo dir
sur la ligne de commande, Windows affiche le
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
Contrôle d'accès pop-up. Si vous cliquez sur "[ NO
]" rien ne se passera. Windows affichera un " Access is denied.
" message.
Lorsque vous cliquez sur "[ YES
]", 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 un arrêt ou une requête sur un service:
sudo sc query SDRSVC
SDRSVC est le nom du service "Service de sauvegarde Windows". Ce qui suit apparaît dans une fenêtre de commande 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 . . .
Le sudo.cmd
script lui-même est très basique. Comme je l'ai dit, mes besoins sont simples. Je souhaite simplement arrêter et démarrer des services pendant le déploiement du code à des fins de test.
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
La pause
commande attend que vous examiniez les résultats. Si vous supprimez pause
, la fenêtre d’administration se ferme et vous ne savez pas si la commande a fonctionné ou non. Le à ERRORLEVEL
partir de la commande est également renvoyé.