Es mejor evitar el uso de comandos de terminal en Windows. En su lugar, intente hacer lo mismo con la ayuda de un IDE, como Eclipse + PyDev. Hará las cosas mucho más simples.
Pushpak Dagade
7
@Pushpak Dagade: Me sentí desconcertado por tu comentario, en general, pero cuando fui a escribir esto me di cuenta de que se trata de STACK OVERFLOW. Estas son las personas que SÍ usan el terminal en Windows. =) Quiero decir, PowerShell probablemente no existiría de otra manera.
Brent Rittenhouse
2
Además, ¿qué pasaría si estuviera creando un script para automatizar una tarea? (Sí, me doy cuenta de que podría ejecutar ESO como usuario privilegiado).
Brent Rittenhouse
Prueba mi wsudo , una herramienta similar a sudo para Windows disponible como paquete Chocolatey.
noseratio
Respuestas:
97
No hay ningún sudocomando en Windows. El equivalente más cercano es "ejecutar como administrador".
Puede hacer esto usando el runascomando con un nivel de confianza de administrador, o haciendo clic con el botón derecho en el programa en la interfaz de usuario y seleccionando "ejecutar como administrador".
¿Sabes si el comportamiento de las runas varía de una versión a otra? He instalado Win7 Enterprise y todas las combinaciones que he probado con runas crean el nuevo cmd sin privilegios de administrador
notNullGothik
4
Sudo para Windows (sudowin) permite a los usuarios autorizados iniciar procesos con privilegios elevados utilizando su propia frase de contraseña. A diferencia del comando runas, Sudo para Windows conserva el perfil del usuario y la propiedad de los objetos creados. Puede obtenerlo aquí: sourceforge.net/projects/sudowin
Joe Bigler
Consulte gsudo( stackoverflow.com/a/58753166/97471 ). Es un sudo para Windows con *nix sudoexperiencia de usuario: permite ejecutar el comando dentro de la consola actual y la caché de credenciales (solo una ventana emergente de UAC).
Gerardo Grignoli
runas es la elevación de una cuenta de usuario en Administradores; sudo es otra cosa. Esta no debería ser la respuesta aceptada.
Massimo
14
Abra el bloc de notas y pegue este código:
@echo off
powershell -Command"Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"@echo on
Luego, guarde el archivo como sudo.cmd. Copie este archivo y péguelo en C:\Windows\System32o agregue la ruta donde sudo.cmdestá a su variable de entorno PATH.
Cuando abre el símbolo del sistema, ahora puede ejecutar algo como sudo start ..
Si desea que la ventana del símbolo del sistema de administración permanezca abierta cuando ejecuta el comando, cambie el código en el bloc de notas a esto:
@echo off
powershell -Command"Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"@echo on
Explicación:
powershell -Command ejecuta un comando de PowerShell.
Start-Process es un comando de PowerShell que inicia un proceso, en este caso, el símbolo del sistema.
-Verb RunAs ejecuta el comando como administrador.
-Argument-List ejecuta el comando con argumentos.
Nuestros argumentos son '/c cd /d %CD% && %*'. %*significa todos los argumentos, así que si lo hiciera sudo foo bar, se ejecutaría en el símbolo del sistema foo barporque los parámetros son foo y bar, y %*devuelve foo bar. cd /d %CD%es un comando para ir al directorio actual. Esto asegurará que cuando abra la ventana elevada, el directorio será el mismo que la ventana normal. los &&medios que si el primer comando se ejecuta correctamente, ejecutar el segundo comando.
El /ces un parámetro cmd para cerrar la ventana una vez finalizado el comando y /kes un parámetro cmd para mantener la ventana abierta.
Crédito a Adam Plocher por permanecer en el código de directorio actual.
Un problema con eso es que una vez elevado, ya no estás en la carpeta actual, sino en C:\Windows\System32.
noseratio
2
@noseratio cierto, parece que cambiarlo a esto funcionará, sin embargo:powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
Adam Plocher
@AdamPlocher, eso podría funcionar pero podría tener problemas si la línea de comando %*tiene comillas. Por eso creé wsudo, basado en PowerShell.
noseratio
Esta es la elevación de una cuenta de usuario en Administradores; sudo es otra cosa.
Massimo
¿No puedes simplemente saltarte las echolíneas uno y tres anteponiendo @la línea de PowerShell?
nudl
9
Todas las respuestas explican cómo elevar su mando en un nuevo host de consola.
Lo que me divirtió fue que ninguna de esas herramientas se comporta como *nix sudo, permitiendo ejecutar el comando dentro de la consola actual .
He creado wsudouna sudoherramienta CLI de código abierto similar a la de Windows para ejecutar programas o comandos con derechos elevados, en el contexto del directorio actual . Está disponible como paquete Chocolatey .
Lo uso mucho para cosas como configurar agentes de compilación, cosas de administración como sfc /scannow, dism /online /cleanup-image /restorehealtho simplemente para instalar / actualizar mis paquetes locales de Chocolatey. Úselo bajo su propio riesgo.
wsudoes una sudoherramienta similar a Linux para Windows para invocar un programa con derechos elevados (como Administrador) desde un símbolo del sistema de shell que no es de administrador y mantener su directorio actual.
Esta implementación no depende del Windows Script Host ( CScript) heredado . En su lugar, utiliza un script auxiliar de PowerShell 5.1 que invoca"Start-Process -Wait -Verb runAs ..." cmdlet. Es muy probable que su sistema ya tenga PowerShell 5.x instalado; de lo contrario, se le ofrecerá instalarlo como una dependencia.
Uso
wsudoejecuta un programa o un comando en línea con derechos elevados en el directorio actual. Ejemplos:
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
Gracias por publicar "wsudo", es bastante útil para mí. Creo que la ventaja de su wsudo es mantener el directorio de trabajo no como las alternativas. No pude encontrar uno que pueda mantener CWD que no sea wsudo. Creo que debería enfatizar este punto en la descripción. Realmente aprecio tu trabajo.
benok
3
Una cosa más para hacerte saber. ¿Conoce el truco de la barra de direcciones para abrir shell directamente? Normalmente uso este truco, pero me sentí muy frustrado cuando quiero obtener un shell elevado con este truco. Traté de encontrar muchas alternativas pero no funciona. Finalmente puedo abrir uno con "wasudo [shell]". Amo tener esto. Gracias de nuevo :-)
benok
3
@benok, lo hago, ¡es un truco muy útil! Glad te lo wasudohizo más fácil. Yo mismo vivo principalmente en la terminal de consola integrada VSCode, así que simplemente escribo wasudoallí :) La siguiente mejora sería heredar las variables de entorno .
noseratio
Hola @benok, también podría estar interesado en mi nueva utilidad para mejorar la productividad de copiar / pegar / ejecutar, DevComrade :)
noseratio
5
runasEl comando requiere que los usuarios ingresen la contraseña. Si no desea escribir la contraseña y solo desea hacer clic en el cuadro de diálogo UAC, utilícelo Start-Process -Verb runasen PowerShell en lugar del runascomando.
Esta es la elevación de una cuenta de usuario en Administradores; sudo es otra cosa.
Massimo
4
Normalmente no lo haría, ya que no lo ejecutaría bajo * nix independientemente. Realice el desarrollo en un directorio de usuarios y luego impleméntelo en los directorios del sistema.
El siguiente script vbs permite lanzar un comando dado con argumentos con elevación e imita el comportamiento del comando unix sudo original para un conjunto limitado de casos usados (no almacena en caché las credenciales ni permite ejecutar realmente comandos con diferentes credenciales). Me lo puse C:\Windows\System32.
¿Cómo podemos hacer que el script espere la entrada del usuario, para que podamos leer la salida del programa de shell?
Ahmad Hajjar
1
¿Te refieres al comando de shell interactivo? Bueno, primero debe intentar asegurarse de que el comando iniciado se espere a que regrese. Aquí parece que es posible. Luego, debería obtener la salida de los objetos de shell y generarla, lo que supongo que también es posible. Sin embargo, no espere que todo lo que pueda hacer en Unix sea posible.
ceztko
En Windows 10, arroja un error de sintaxis en la línea 1, carácter 6.
Martin Braun
Esta es la elevación de una cuenta de usuario en Administradores; sudo es otra cosa.
Massimo
1
Creo que probé los pasos a continuación después de investigar un poco y tuve éxito
1.Instale scoop usando powershell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. haga scoop install --global sudo 3. asegúrese de que las rutas (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) agregado en la variable de ruta ambiental.
No hay un comando sudo en el caso de Windows y tampoco es necesario poner ningún $. Para instalar Angular CLI a través del símbolo del sistema node.js en Windows, simplemente escribí npm install -g @ angular / cli y luego presioné Enter. Funcionó bien.
En Windows Powershell puede usar el comando Start-Process con la opción -Verb RunAsde iniciar un proceso elevado. Aquí está mi ejemplo de función sudo:
function sudo {
Start-Process @args -verb runas
}
Ejemplo: abra el archivo de hosts como administrador en el bloc de notas
Esta respuesta debe incluir el texto del archivo por lotes, no depender de un enlace fuera del sitio debido a la descomposición del enlace. Además, la respuesta debe incluir el descargo de responsabilidad de que este script busca emular el comportamiento burdo de sudo, pero no es realmente sudo (es un pseudo-sudo).
Preguntado
0
Para ejecutar un comando como administrador en un Powershell no elevado, puede usarlo Start-Processdirectamente, con las opciones adecuadas, en particular -Verb runas.
Es mucho más complicado que sudo, particularmente porque no puede simplemente reutilizar el comando anterior con una opción adicional. Necesita especificar los argumentos de su comando por separado.
Aquí hay un ejemplo, usando el comando route para cambiar la puerta de enlace:
Respuestas:
No hay ningún
sudo
comando en Windows. El equivalente más cercano es "ejecutar como administrador".Puede hacer esto usando el
runas
comando con un nivel de confianza de administrador, o haciendo clic con el botón derecho en el programa en la interfaz de usuario y seleccionando "ejecutar como administrador".fuente
gsudo
( stackoverflow.com/a/58753166/97471 ). Es un sudo para Windows con*nix sudo
experiencia de usuario: permite ejecutar el comando dentro de la consola actual y la caché de credenciales (solo una ventana emergente de UAC).Abra el bloc de notas y pegue este código:
Luego, guarde el archivo como
sudo.cmd
. Copie este archivo y péguelo enC:\Windows\System32
o agregue la ruta dondesudo.cmd
está a su variable de entorno PATH.Cuando abre el símbolo del sistema, ahora puede ejecutar algo como
sudo start .
.Si desea que la ventana del símbolo del sistema de administración permanezca abierta cuando ejecuta el comando, cambie el código en el bloc de notas a esto:
Explicación:
powershell -Command
ejecuta un comando de PowerShell.Start-Process
es un comando de PowerShell que inicia un proceso, en este caso, el símbolo del sistema.-Verb RunAs
ejecuta el comando como administrador.-Argument-List
ejecuta el comando con argumentos.Nuestros argumentos son
'/c cd /d %CD% && %*'
.%*
significa todos los argumentos, así que si lo hicierasudo foo bar
, se ejecutaría en el símbolo del sistemafoo bar
porque los parámetros son foo y bar, y%*
devuelvefoo bar
.cd /d %CD%
es un comando para ir al directorio actual. Esto asegurará que cuando abra la ventana elevada, el directorio será el mismo que la ventana normal. los&&
medios que si el primer comando se ejecuta correctamente, ejecutar el segundo comando.El
/c
es un parámetro cmd para cerrar la ventana una vez finalizado el comando y/k
es un parámetro cmd para mantener la ventana abierta.Crédito a Adam Plocher por permanecer en el código de directorio actual.
fuente
C:\Windows\System32
.powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
%*
tiene comillas. Por eso creéwsudo
, basado en PowerShell.echo
líneas uno y tres anteponiendo@
la línea de PowerShell?Todas las respuestas explican cómo elevar su mando en un nuevo host de consola.
Lo que me divirtió fue que ninguna de esas herramientas se comporta como
*nix sudo
, permitiendo ejecutar el comando dentro de la consola actual .Entonces, escribí: gsudo
Código fuente https://github.com/gerardog/gsudo
Instalación
Vía primicia
O vía Chocolatey
Instalación manual:
Manifestación
fuente
He creado
wsudo
unasudo
herramienta CLI de código abierto similar a la de Windows para ejecutar programas o comandos con derechos elevados, en el contexto del directorio actual . Está disponible como paquete Chocolatey .Lo uso mucho para cosas como configurar agentes de compilación, cosas de administración como
sfc /scannow
,dism /online /cleanup-image /restorehealth
o simplemente para instalar / actualizar mis paquetes locales de Chocolatey. Úselo bajo su propio riesgo.Instalación
Chocolatey ya debe estar instalado.
Propósito
wsudo
es unasudo
herramienta similar a Linux para Windows para invocar un programa con derechos elevados (como Administrador) desde un símbolo del sistema de shell que no es de administrador y mantener su directorio actual.Esta implementación no depende del Windows Script Host (
CScript
) heredado . En su lugar, utiliza un script auxiliar de PowerShell 5.1 que invoca"Start-Process -Wait -Verb runAs ..."
cmdlet. Es muy probable que su sistema ya tenga PowerShell 5.x instalado; de lo contrario, se le ofrecerá instalarlo como una dependencia.Uso
wsudo
ejecuta un programa o un comando en línea con derechos elevados en el directorio actual. Ejemplos:Para obtener más detalles, visite la reproducción de GitHub .
fuente
wasudo
hizo más fácil. Yo mismo vivo principalmente en la terminal de consola integrada VSCode, así que simplemente escribowasudo
allí :) La siguiente mejora sería heredar las variables de entorno .runas
El comando requiere que los usuarios ingresen la contraseña. Si no desea escribir la contraseña y solo desea hacer clic en el cuadro de diálogo UAC, utilíceloStart-Process -Verb runas
en PowerShell en lugar delrunas
comando.ver: http://satob.hatenablog.com/entry/2017/06/17/013217
fuente
Normalmente no lo haría, ya que no lo ejecutaría bajo * nix independientemente. Realice el desarrollo en un directorio de usuarios y luego impleméntelo en los directorios del sistema.
fuente
en Windows, puede utilizar el comando runas. Para los usuarios de Linux, existen algunas alternativas para sudo en Windows, puede consultar esto
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-sudo-command/
fuente
Puede usar el comando runas - http://technet.microsoft.com/en-us/library/bb490994.aspx o sudowin - http://sourceforge.net/projects/sudowin/
fuente
Hay algo así. ¿Creé Sudo para Windows en 2007? 08? Aquí está el documento de seguridad que escribí al respecto: https://www.sans.org/reading-room/whitepapers/bestprac/sudo-windows-sudowin-1726 . Estoy bastante seguro de que http://sudowin.sf.net también funciona.
fuente
El siguiente script vbs permite lanzar un comando dado con argumentos con elevación e imita el comportamiento del comando unix sudo original para un conjunto limitado de casos usados (no almacena en caché las credenciales ni permite ejecutar realmente comandos con diferentes credenciales). Me lo puse
C:\Windows\System32
.Ejemplo de uso en un símbolo del sistema
sudo net start service
fuente
Creo que probé los pasos a continuación después de investigar un poco y tuve éxito
1.Instale scoop usando powershell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. haga scoop install --global sudo 3. asegúrese de que las rutas (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) agregado en la variable de ruta ambiental.
fuente
No hay un comando sudo en el caso de Windows y tampoco es necesario poner ningún $. Para instalar Angular CLI a través del símbolo del sistema node.js en Windows, simplemente escribí npm install -g @ angular / cli y luego presioné Enter. Funcionó bien.
fuente
abra la consola como administrador. Haga clic derecho en el símbolo del sistema o bash -> más y seleccione "ejecutar como administrador"
fuente
En Windows Powershell puede usar el comando Start-Process con la opción
-Verb RunAs
de iniciar un proceso elevado. Aquí está mi ejemplo de función sudo:Ejemplo: abra el archivo de hosts como administrador en el bloc de notas
fuente
El uso del
sudo
comando para usuarios de ventanas le ofrece las siguientes sugerencias:Primero, instale la
scoop
herramienta de administración de paquetes y ejecute los siguientes comandos:Luego use
scoop
para instalar elsudo
comando:Finalmente, puede ejecutar el comando con
sudo
:fuente
Me alegro de ayudarte.
Para hacer un comando sudo, siga los pasos: -
https://gist.github.com/coder-examples/5ca6c141d6d356ddba4e356d63fb2c13
Espero que esto te ayudará
fuente
Para ejecutar un comando como administrador en un Powershell no elevado, puede usarlo
Start-Process
directamente, con las opciones adecuadas, en particular-Verb runas
.Es mucho más complicado que
sudo
, particularmente porque no puede simplemente reutilizar el comando anterior con una opción adicional. Necesita especificar los argumentos de su comando por separado.Aquí hay un ejemplo, usando el comando route para cambiar la puerta de enlace:
Esto falla porque no estamos en un PS elevado:
Esto funciona después de aceptar la UAC:
O para un comando que requiere
cmd.exe
:fuente