¿Cómo ejecutar el script de Powershell como usuario actual desde un contexto elevado?

¿Cómo ejecutar el script de Powershell como usuario actual desde un contexto elevado?

Tengo un script de Powershell que requiere elevación de administrador para configurar un recurso compartido de archivos de Azure, entre otras cosas. El comando de secuencia de comandos final se utiliza New-PSDrivepara asignar el archivo compartido a una letra de unidad. Mi expectativa es que se pueda acceder a la nueva letra de unidad desde el Explorador de Windows. Soy consciente de que el uso New-PSDrivedesde un contexto elevado solo asigna la unidad en ese contexto, por lo que no está disponible para mi cuenta de usuario.

¿Cómo ejecuto un script/proceso de Powershell como usuario actual desde un script elevado?

Respuesta1

No puede cambiar el contexto del usuario sin proporcionar las credenciales del usuario. Puede obtener el usuario que inició sesión con bastante facilidad, pero nunca obtendrá su contraseña, a menos que la ingrese.

Invoke-Command -FilePath "yourPath\yourScript.ps1" -ComputerName yourServer -Credential Get-Credential

En segundo lugar, si ejecuta el programa de forma remota, el usuario nunca verá esto, ya que solo se puede ejecutar en el contexto original en el que se encuentra.

PowerShell no le permite hacer esto de forma nativa, ya que es un límite de seguridad de Windows. Si realmente necesita hacer esto, considere usar MS SysInternals PSExec.

O busque hacer cosas en una tarea programada.

Respuesta2

Estaba pensando mal en todo esto ya que de forma predeterminada ejecuto todo como administrador. Dividí el script en dos scripts separados, uno para el código que requiere derechos de administrador y otro que requiere derechos de usuario. Llamo al script de derechos de usuario que verifica y genera errores si está en el contexto de administrador. Luego puedo ejecutar el script de administración desde el script del usuario en su propio mensaje elevado, esperar y volveré al contexto del usuario.

información relacionada