Saltar al contenido

Cómo sudo en powershell en Windows

Después de mucho batallar ya hallamos la contestación de este inconveniente que agunos usuarios de nuestra web tienen. Si deseas aportar algún dato puedes aportar tu conocimiento.

Solución:

Si está utilizando Chocolatey (un administrador de paquetes), puede instalar un paquete llamado sudo.
Entonces puedes usar sudo como Linux
sudo

si estas corriendo desde PowerShell yaluego usa Start-Process -Verb RunAs como sigue:

Start-Process -Verb RunAs powershell.exe -Args "-executionpolicy bypass -command Set-Location `"$PWD`"; .install.ps1"

Nota:

  • El script se ejecuta invariablemente en un nueva ventana.
  • Dado que el directorio de trabajo de la nueva ventana es invariablemente $env:windirSystem32a Set-Location llamada que cambia al directorio de trabajo de la persona que llama ($PWD) se antepone.
    • Tenga en cuenta que en PowerShell (Core) 7+ (pwsh.exe) esto ya no es necesario, porque la ubicación actual de la persona que llama se hereda.
  • ejecutando Set-Location requiere el uso de -Command en lugar de -File.
    • En el lado positivo, esto evita la necesidad de -nologo.
    • Una advertencia general es que -Command puede cambiar la forma en que se interpretan los argumentos pasados ​​a su secuencia de comandos (no hay ninguno en su caso), porque se interpretan de la misma manera que si pasara los argumentos desde PowerShell, mientras que -File los trata como literales.

Si estás llamando desde fuera de PowerShelltípicamente de cmd.exe/ un archivo por lotesnecesitas envolver lo anterior en un llamada exterior a powershell.exelo que complica las cosas en términos de citas, desafortunadamente:

powershell.exe -command "Start-Process -Verb RunAs powershell.exe -Args '-executionpolicy bypass -command', "Set-Location `"$PWD`"; .install.ps1""

Interactivamentepor supuesto que puede:

  • Haga clic con el botón derecho en el acceso directo de PowerShell (en la barra de tareas, en el menú Inicio o en el escritorio), seleccione Run as Administrator para abrir una ventana de PowerShell que se ejecuta con privilegios de administrador y ejecutar .install.ps1 desde allí.

  • Como alternativa, desde una ventana de PowerShell existente, puede abrir una ventana de ejecución como administrador con Start-Process -Verb RunAs powershell.execomo en la respuesta de AdminOfThings.

Si tiene una política corporativa que bloquea la ejecución de scripts, entonces sí. ByPass no cambia el estado de su perfil (contexto de usuario). Ese no es el diseño (caso de uso) para ninguno de esos conmutadores con respecto a las políticas de ejecución.

No hay una comparación directa de sudo en Windows, esto no tiene nada que ver con PowerShell. O eres administrador en una sesión/aplicación o no lo eres. Si está instalando software, eso significa que debe ser administrador. Si está realizando cambios globales en todo el sistema, eso significa que debe ser administrador.

Hay gente que se ha esforzado por implementar secuencias de comandos, funciones de contenedor o módulos para imitar sudo…

Módulo de la galería de MS PowerShell. Sudo 0.9.3 Use una funcionalidad similar a sudo en PowerShell

Desde GitHub Sudo para PowerShell

Sudo para la instalación de PowerShell Desde PowerShell, cree un perfil de $ si no tiene uno:

if (!(test-path $profile))  new-item -path $profile -itemtype file -force 

Abra el perfil en el bloc de notas:

notepad.exe $profile

Agregue la siguiente línea y guarde el archivo:

. /path/to/sudo.ps1

sudo estará disponible en todas las nuevas ventanas de PowerShell

sudo application [arguments ...]

… pero eso no cambia lo que espera Windows cuando se trata de límites de seguridad.

¡Vea también este Sudo de preguntas y respuestas! equivalente en PowerShell

$^ es una variable que se expande al último comando de Powershell ejecutado. Puede ejecutar un comando como otro usuario usando runas, por lo que funciona lo siguiente:

runas /user:domainadministrator $^

Para acortarlo un poco, puedes hacer algo de magia con los alias. Eche un vistazo a este artículo de Technet para obtener más información.

EDITAR: una advertencia: $ ^ solo ejecuta el primer comando en una tubería o línea de comando múltiple. Si necesita rehacer un comando completo que está salpicado de barras verticales o punto y coma, use Invoke-History en su lugar (que por defecto es el último comando completo en su totalidad).

Puntuaciones y comentarios

Puedes asistir nuestra ocupación exponiendo un comentario o dejando una puntuación te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *