Il vaut mieux éviter d'utiliser les commandes de terminal sous Windows. Au lieu de cela, essayez de faire la même chose avec l'aide d'un IDE, comme Eclipse + PyDev. Cela rendra les choses beaucoup plus simples.
Pushpak Dagade
7
@Pushpak Dagade: J'ai été décontenancé par votre commentaire, en général, mais quand je suis allé taper ceci, j'ai réalisé que c'était STACK OVERFLOW. Ce sont les personnes qui utilisent le terminal sous Windows. =) Je veux dire, PowerShell n'existerait probablement pas autrement.
Brent Rittenhouse
2
Et s'il créait un script pour automatiser une tâche? (Oui, je sais que vous pourriez exécuter THAT en tant qu'utilisateur privilégié.)
Brent Rittenhouse
Essayez mon wsudo , un outil de type sudo pour Windows disponible sous forme de package Chocolatey.
noseratio
Réponses:
98
Il n'y a pas de sudocommande sous Windows. L'équivalent le plus proche est «exécuter en tant qu'administrateur».
Vous pouvez le faire à l'aide de la runascommande avec un niveau de confiance administrateur ou en cliquant avec le bouton droit sur le programme dans l'interface utilisateur et en choisissant «exécuter en tant qu'administrateur».
Savez-vous si le comportement des runas varie d'une version à l'autre? J'ai installé Win7 Enterprise et toutes les combinaisons que j'ai essayées avec runas créent le nouveau cmd sans privilèges d'administrateur
notNullGothik
4
Sudo pour Windows (sudowin) permet aux utilisateurs autorisés de lancer des processus avec des privilèges élevés en utilisant leur propre mot de passe. Contrairement à la commande runas, Sudo pour Windows préserve le profil de l'utilisateur et la propriété des objets créés. Vous pouvez l'obtenir ici: sourceforge.net/projects/sudowin
Joe Bigler
Consultez gsudo( stackoverflow.com/a/58753166/97471 ). C'est un sudo pour Windows avec *nix sudoune expérience utilisateur: permettant d'exécuter la commande dans la console actuelle et le cache des informations d'identification (un seul popup UAC).
Gerardo Grignoli
runas est l'élévation d'un compte d'utilisateur dans les administrateurs; sudo est une autre chose. Cela ne devrait pas être la réponse acceptée.
Massimo le
14
Ouvrez le bloc-notes et collez ce code:
@echo off
powershell -Command"Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"@echo on
Ensuite, enregistrez le fichier sous sudo.cmd. Copiez ce fichier et collez-le dans C:\Windows\System32ou ajoutez le chemin où se sudo.cmdtrouve votre variable d'environnement PATH.
Lorsque vous ouvrez l'invite de commande, vous pouvez maintenant exécuter quelque chose comme sudo start ..
Si vous souhaitez que la fenêtre d'invite de commande d'administration reste ouverte lorsque vous exécutez la commande, modifiez le code dans le bloc-notes comme suit:
@echo off
powershell -Command"Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"@echo on
Explication:
powershell -Command exécute une commande PowerShell.
Start-Process est une commande PowerShell qui démarre un processus, dans ce cas, une invite de commande.
-Verb RunAs exécute la commande en tant qu'administrateur.
-Argument-List exécute la commande avec des arguments.
Nos arguments sont '/c cd /d %CD% && %*'. %*signifie tous les arguments, donc si vous le faisiez sudo foo bar, il s'exécuterait dans l'invite de commande foo barcar les paramètres sont foo et bar, et %*retourne foo bar. cd /d %CD%est une commande pour aller dans le répertoire courant. Cela garantira que lorsque vous ouvrez la fenêtre élevée, le répertoire sera le même que la fenêtre normale. les &&moyens qui , si la première commande est réussie, exécuter le deuxième commande.
Le /cest un paramètre cmd pour fermer la fenêtre une fois la commande terminée, et le /kest un paramètre cmd pour garder la fenêtre ouverte.
Crédit à Adam Plocher pour le séjour dans le code du répertoire courant.
Un problème avec cela est qu'une fois élevé, vous n'êtes plus dans ce qui était le dossier actuel, mais plutôt dans C:\Windows\System32.
noseratio
2
@noseratio vrai, il semble que le changer pour cela fera l'affaire, cependant:powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
Adam Plocher
@AdamPlocher, cela pourrait fonctionner mais pourrait avoir des problèmes si la ligne de commande %*contient des guillemets. C'est pourquoi j'ai créé wsudo, basé sur PowerShell.
noseratio
Il s'agit de l'élévation d'un compte d'utilisateur dans les administrateurs; sudo est une autre chose.
Massimo le
Ne pouvez-vous pas simplement sauter les echolignes un et trois en précédant @la ligne PowerShell ?
nudl
9
Toutes les réponses expliquent comment élever votre commande dans un nouvel hôte de console.
Ce qui m'a amusé, c'est qu'aucun de ces outils ne se comporte comme *nix sudo, permettant d'exécuter la commande à l'intérieur de la console actuelle .
J'ai créé wsudoun sudooutil CLI de type open source pour Windows pour exécuter des programmes ou des commandes avec une élévation à droite, dans le contexte du répertoire actuel . Il est disponible en emballage chocolaté .
Je l'utilise beaucoup pour des choses comme la configuration des agents de build, des tâches d'administration sfc /scannow, dism /online /cleanup-image /restorehealthou simplement pour installer / mettre à jour mes packages Chocolatey locaux. À utiliser à vos risques et périls.
wsudoest un sudooutil de type Linux permettant à Windows d'appeler un programme avec des droits élevés (en tant qu'administrateur) à partir d'une invite de commande shell non-admin et en conservant son répertoire actuel.
Cette implémentation ne dépend pas de l'ancien Windows Script Host ( CScript). Au lieu de cela, il utilise un script d'assistance PowerShell 5.1 qui appelle l' "Start-Process -Wait -Verb runAs ..."applet de commande. Votre système a probablement déjà installé PowerShell 5.x, sinon il vous sera proposé de l'installer en tant que dépendance.
Usage
wsudoexécute un programme ou une commande en ligne avec des droits élevés dans le répertoire actuel. Exemples:
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
Merci d'avoir publié "wsudo", c'est assez utile pour moi. Je pense que l'avantage de votre wsudo est de garder le répertoire de travail pas comme les alternatives. Je n'ai pas trouvé que l'on puisse garder CWD autre que wsudo. Je pense que vous devriez souligner ce point dans la description. J'apprécie vraiment votre travail.
benok
3
Encore une chose à vous faire savoir. Connaissez-vous le piratage de la barre d'adresse pour ouvrir directement le shell? J'utilise habituellement ce hack, mais j'étais très frustré quand je voulais obtenir un shell élevé avec ce hack. J'ai essayé de trouver de nombreuses alternatives mais cela ne fonctionne pas. Je peux enfin en ouvrir un avec "wasudo [shell]". J'adore avoir ça. Merci encore :-)
benok
3
@benok, c'est vrai, c'est un hack pratique! Glad wasudovous a facilité la tâche. Je vis moi-même principalement dans le terminal de console intégré VSCode, donc je viens de taper wasudolà :) La prochaine amélioration serait d'hériter des variables d'environnement .
noseratio
Bonjour @benok, vous pourriez également être intéressé par mon nouvel utilitaire pour améliorer la productivité copier / coller / exécuter, DevComrade :)
noseratio
5
runascommande oblige les utilisateurs à saisir le mot de passe. Si vous ne souhaitez pas taper de mot de passe et que vous souhaitez simplement cliquer sur la boîte de dialogue UAC, utilisez Start-Process -Verb runasPowerShell au lieu de runascommande.
Il s'agit de l'élévation d'un compte d'utilisateur dans les administrateurs; sudo est une autre chose.
Massimo le
4
Vous ne le feriez normalement pas, puisque vous ne l'exécuteriez pas sous * nix de toute façon. Faites le développement dans un répertoire utilisateur, puis déployez-le dans les répertoires système.
sous Windows, vous pouvez utiliser la commande runas. Pour les utilisateurs de Linux, il existe des alternatives pour sudo dans Windows, vous pouvez vérifier ceci
Le script vbs suivant permet de lancer une commande donnée avec des arguments avec élévation et imite le comportement de la commande sudo unix originale pour un ensemble limité de cas d'utilisation (il ne mettra pas en cache les informations d'identification ni ne permet d'exécuter réellement des commandes avec des informations d'identification différentes). Je l'ai mis C:\Windows\System32.
comment pouvons-nous faire attendre le script pour l'entrée de l'utilisateur, afin que nous puissions lire la sortie du programme shell?
Ahmad Hajjar
1
Vous voulez dire une commande shell interactive? Eh bien, vous devriez d'abord essayer de vous assurer que la commande lancée sera attendue pour le retour. Ici, il semble que ce soit possible. Ensuite, vous devriez obtenir la sortie des objets shell et la sortir, ce qui, je suppose, est également possible. Ne vous attendez pas à ce que tout ce que vous pouvez faire sous Unix soit possible.
ceztko
Sous Windows 10, il génère une erreur de syntaxe sur la ligne 1, car 6.
Martin Braun
Il s'agit de l'élévation d'un compte d'utilisateur dans les administrateurs; sudo est une autre chose.
Massimo le
1
Je pense que j'ai essayé les étapes ci-dessous après avoir fait des recherches et j'ai réussi
1.Installez scoop à l'aide de PowerShell 3 (iex (nouvel objet net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. do scoop install --global sudo 3. assurez-vous que les chemins (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) ajouté dans la variable de chemin d'environnement.
Il n'y a pas de commande sudo dans le cas de windows et il n'est pas non plus nécessaire de mettre $. Pour installer Angular CLI via l'invite de commande node.js dans Windows, je viens d'écrire npm install -g @ angular / cli , puis j'ai appuyé sur Entrée. Cela a bien fonctionné.
ouvrez la console en tant qu'administrateur. Faites un clic droit sur l'invite de commande ou bash -> plus et sélectionnez "exécuter en tant qu'administrateur"
Dans Windows Powershell, vous pouvez utiliser la commande Start-Process avec une option -Verb RunAspour démarrer et un processus élevé. Voici mon exemple de fonction sudo:
function sudo {
Start-Process @args -verb runas
}
Ex: ouvrir le fichier d'hôtes en tant qu'administrateur dans le bloc-notes
Cette réponse doit inclure le texte du fichier de commandes, ne pas dépendre d'un lien hors site en raison de la pourriture du lien. La réponse devrait également inclure l'avertissement que ce script cherche à émuler le comportement grossier de sudo, mais n'est pas vraiment sudo (c'est un pseudo-sudo).
asky
0
Pour simplement exécuter une commande en tant qu'administrateur dans un Powershell non élevé, vous pouvez utiliser Start-Processdirectement, avec les bonnes options, en particulier -Verb runas.
C'est beaucoup plus compliqué que sudo, en particulier parce que vous ne pouvez pas simplement réutiliser la commande précédente avec une option supplémentaire. Vous devez spécifier les arguments de votre commande séparément.
Voici un exemple, en utilisant la commande route pour changer la passerelle:
Cela échoue car nous ne sommes pas dans un PS élevé:
Réponses:
Il n'y a pas de
sudo
commande sous Windows. L'équivalent le plus proche est «exécuter en tant qu'administrateur».Vous pouvez le faire à l'aide de la
runas
commande avec un niveau de confiance administrateur ou en cliquant avec le bouton droit sur le programme dans l'interface utilisateur et en choisissant «exécuter en tant qu'administrateur».la source
gsudo
( stackoverflow.com/a/58753166/97471 ). C'est un sudo pour Windows avec*nix sudo
une expérience utilisateur: permettant d'exécuter la commande dans la console actuelle et le cache des informations d'identification (un seul popup UAC).Ouvrez le bloc-notes et collez ce code:
Ensuite, enregistrez le fichier sous
sudo.cmd
. Copiez ce fichier et collez-le dansC:\Windows\System32
ou ajoutez le chemin où sesudo.cmd
trouve votre variable d'environnement PATH.Lorsque vous ouvrez l'invite de commande, vous pouvez maintenant exécuter quelque chose comme
sudo start .
.Si vous souhaitez que la fenêtre d'invite de commande d'administration reste ouverte lorsque vous exécutez la commande, modifiez le code dans le bloc-notes comme suit:
Explication:
powershell -Command
exécute une commande PowerShell.Start-Process
est une commande PowerShell qui démarre un processus, dans ce cas, une invite de commande.-Verb RunAs
exécute la commande en tant qu'administrateur.-Argument-List
exécute la commande avec des arguments.Nos arguments sont
'/c cd /d %CD% && %*'
.%*
signifie tous les arguments, donc si vous le faisiezsudo foo bar
, il s'exécuterait dans l'invite de commandefoo bar
car les paramètres sont foo et bar, et%*
retournefoo bar
.cd /d %CD%
est une commande pour aller dans le répertoire courant. Cela garantira que lorsque vous ouvrez la fenêtre élevée, le répertoire sera le même que la fenêtre normale. les&&
moyens qui , si la première commande est réussie, exécuter le deuxième commande.Le
/c
est un paramètre cmd pour fermer la fenêtre une fois la commande terminée, et le/k
est un paramètre cmd pour garder la fenêtre ouverte.Crédit à Adam Plocher pour le séjour dans le code du répertoire courant.
la source
C:\Windows\System32
.powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
%*
contient des guillemets. C'est pourquoi j'ai crééwsudo
, basé sur PowerShell.echo
lignes un et trois en précédant@
la ligne PowerShell ?Toutes les réponses expliquent comment élever votre commande dans un nouvel hôte de console.
Ce qui m'a amusé, c'est qu'aucun de ces outils ne se comporte comme
*nix sudo
, permettant d'exécuter la commande à l'intérieur de la console actuelle .Alors, j'ai écrit: gsudo
Code source https://github.com/gerardog/gsudo
Installation
Par scoop
Ou via Chocolatey
Installation manuelle:
Démo
la source
J'ai créé
wsudo
unsudo
outil CLI de type open source pour Windows pour exécuter des programmes ou des commandes avec une élévation à droite, dans le contexte du répertoire actuel . Il est disponible en emballage chocolaté .Je l'utilise beaucoup pour des choses comme la configuration des agents de build, des tâches d'administration
sfc /scannow
,dism /online /cleanup-image /restorehealth
ou simplement pour installer / mettre à jour mes packages Chocolatey locaux. À utiliser à vos risques et périls.Installation
Chocolatey doit être déjà installé.
Objectif
wsudo
est unsudo
outil de type Linux permettant à Windows d'appeler un programme avec des droits élevés (en tant qu'administrateur) à partir d'une invite de commande shell non-admin et en conservant son répertoire actuel.Cette implémentation ne dépend pas de l'ancien Windows Script Host (
CScript
). Au lieu de cela, il utilise un script d'assistance PowerShell 5.1 qui appelle l'"Start-Process -Wait -Verb runAs ..."
applet de commande. Votre système a probablement déjà installé PowerShell 5.x, sinon il vous sera proposé de l'installer en tant que dépendance.Usage
wsudo
exécute un programme ou une commande en ligne avec des droits élevés dans le répertoire actuel. Exemples:Pour plus de détails, visitez la repro GitHub .
la source
wasudo
vous a facilité la tâche. Je vis moi-même principalement dans le terminal de console intégré VSCode, donc je viens de taperwasudo
là :) La prochaine amélioration serait d'hériter des variables d'environnement .runas
commande oblige les utilisateurs à saisir le mot de passe. Si vous ne souhaitez pas taper de mot de passe et que vous souhaitez simplement cliquer sur la boîte de dialogue UAC, utilisezStart-Process -Verb runas
PowerShell au lieu derunas
commande.voir: http://satob.hatenablog.com/entry/2017/06/17/013217
la source
Vous ne le feriez normalement pas, puisque vous ne l'exécuteriez pas sous * nix de toute façon. Faites le développement dans un répertoire utilisateur, puis déployez-le dans les répertoires système.
la source
sous Windows, vous pouvez utiliser la commande runas. Pour les utilisateurs de Linux, il existe des alternatives pour sudo dans Windows, vous pouvez vérifier ceci
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-sudo-command/
la source
Vous pouvez utiliser la commande runas - http://technet.microsoft.com/en-us/library/bb490994.aspx ou sudowin - http://sourceforge.net/projects/sudowin/
la source
Il y a en quelque sorte. J'ai créé Sudo pour Windows en 2007? 08? Voici le document de sécurité que j'ai écrit à ce sujet - https://www.sans.org/reading-room/whitepapers/bestprac/sudo-windows-sudowin-1726 . À peu près sûr que http://sudowin.sf.net fonctionne toujours aussi.
la source
Le script vbs suivant permet de lancer une commande donnée avec des arguments avec élévation et imite le comportement de la commande sudo unix originale pour un ensemble limité de cas d'utilisation (il ne mettra pas en cache les informations d'identification ni ne permet d'exécuter réellement des commandes avec des informations d'identification différentes). Je l'ai mis
C:\Windows\System32
.Exemple d'utilisation sur une invite de commande
sudo net start service
la source
Je pense que j'ai essayé les étapes ci-dessous après avoir fait des recherches et j'ai réussi
1.Installez scoop à l'aide de PowerShell 3 (iex (nouvel objet net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. do scoop install --global sudo 3. assurez-vous que les chemins (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) ajouté dans la variable de chemin d'environnement.
la source
Il n'y a pas de commande sudo dans le cas de windows et il n'est pas non plus nécessaire de mettre $. Pour installer Angular CLI via l'invite de commande node.js dans Windows, je viens d'écrire npm install -g @ angular / cli , puis j'ai appuyé sur Entrée. Cela a bien fonctionné.
la source
ouvrez la console en tant qu'administrateur. Faites un clic droit sur l'invite de commande ou bash -> plus et sélectionnez "exécuter en tant qu'administrateur"
la source
Dans Windows Powershell, vous pouvez utiliser la commande Start-Process avec une option
-Verb RunAs
pour démarrer et un processus élevé. Voici mon exemple de fonction sudo:Ex: ouvrir le fichier d'hôtes en tant qu'administrateur dans le bloc-notes
la source
L'utilisation de la
sudo
commande pour les utilisateurs de fenêtres vous donne les suggestions suivantes:Tout d'abord, installez l'
scoop
outil de gestion des packages et exécutez les commandes suivantes:Ensuite, utilisez
scoop
pour installer lasudo
commande:Enfin, vous pouvez exécuter la commande avec
sudo
:la source
Je suis heureux de vous aider.
Pour créer une commande sudo, suivez les étapes: -
https://gist.github.com/coder-examples/5ca6c141d6d356ddba4e356d63fb2c13
J'espère que ceci vous aidera
la source
Pour simplement exécuter une commande en tant qu'administrateur dans un Powershell non élevé, vous pouvez utiliser
Start-Process
directement, avec les bonnes options, en particulier-Verb runas
.C'est beaucoup plus compliqué que
sudo
, en particulier parce que vous ne pouvez pas simplement réutiliser la commande précédente avec une option supplémentaire. Vous devez spécifier les arguments de votre commande séparément.Voici un exemple, en utilisant la commande route pour changer la passerelle:
Cela échoue car nous ne sommes pas dans un PS élevé:
Cela fonctionne après avoir accepté l'UAC:
Ou pour une commande qui nécessite
cmd.exe
:la source