2009-05-27 18 views
11

¿Es posible elevar los permisos de un script de PowerShell para que un usuario sin privilegios de administrador pueda ejecutar el script? Nuestros administradores de redes están tratando de encontrar formas más eficientes en el tiempo para realizar ciertas tareas que ahora tienen que usar el escritorio remoto para ... automatizarlos con scripts de PS ayudaría, pero los usuarios no tienen derechos de administrador.Scripts Elevate Powershell

+3

pertenece el servidor falla. – Richard

+0

Ver SF @ http://serverfault.com/questions/12985/elevated-powershell-script – Richard

+2

Sí, si miras al usuario que publicó esa pregunta ... verás que fui yo. Lo publiqué allí porque estabas tratando de obtener mi pregunta aquí arrancada ... –

Respuesta

8

La tarea es más como setuid que sudo ... y por suerte, setuid es posible: sólo tiene que crear una tarea programada (sin un horario establecido), y establecer que se ejecute elevado. Luego, otorgue a sus usuarios los derechos para ejecutar esa tarea. Hace un tiempo describí el proceso in a blog post junto con un script de PowerShell para ayudar a crear las tareas y los accesos directos para ejecutarlos.

El problema (como sugirió JaredPar) es que debe asegurarse de que las aplicaciones que ha programado ejecutar como elevadas o "como administrador" estén protegidas, y esto es especialmente cierto si va a ejecutar un script. Asegúrese de que nadie más que el administrador (s) pueda editar o reemplazar ese script, o está regalando las claves proverbiales del reino.

+0

Parece que podría funcionar, ¿sabes si funcionará también con XP? –

+1

Enlace muerto. Internet Archive * ¡Activar! * Https://web.archive.org/web/20110821152558/http://huddledmasses.org/vista-setuid-how-to-elevate-without-prompting/ –

1

Parece que está buscando un sudo equivalente en windows. Sudo no es inherente a Windows como lo es a la mayoría de los entornos de estilo Unix. Pero hay varias herramientas disponibles que son equivalentes cercanas.

Sé cuidadoso al utilizar este tipo de herramientas sin embargo. Un script + sudo no dañado es un riesgo de seguridad.

6

si está utilizando V2, puede utilizar lo siguiente, que está arriba en the PowerShell Team Blog

Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "Get-Process"' 

Esto iría en "Get-Process" como administrador.

Si no tiene V2, puede crear un objeto StartInfo y establecer el Verbo en Runas así.

function Start-Proc { 
    param ([string]$exe = $(Throw "An executable must be specified"),[string]$arguments)  

    # Build Startinfo and set options according to parameters 
    $startinfo = new-object System.Diagnostics.ProcessStartInfo 
    $startinfo.FileName = $exe 
    $startinfo.Arguments = $arguments 
    $startinfo.verb = "RunAs" 
    $process = [System.Diagnostics.Process]::Start($startinfo) 

} 

I have a blog post que habla un poco más sobre el uso de un objeto System.Diagnostics.ProcessStartInfo.

+1

Eso no ayuda si los usuarios no son administradores;) – Jaykul

+0

Lo suficiente. Eché un vistazo demasiado rápido a la pregunta –

1

primera choco install pscx través http://chocolatey.org/ (es posible que tenga que reiniciar el entorno de shell)

a continuación, active psxc

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx 

A continuación, utilice Invoke-Elevated

Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR 
Cuestiones relacionadas