Ejecute PowerShell remoto como administrador

14

Antes de sumergirme en la pregunta, he encontrado varias otras preguntas que parecen similares a las mías, pero no han podido resolver mi problema. Aquí hay enlaces a ellos:

Ejecute de forma remota un script que invoque "Ejecutar como administrador"

/programming/10724591/how-to-remote-execute-an-elevated-remote-script-in-powershell

Ahora sobre la pregunta: necesito ejecutar un script de Windows Update en una máquina remota a través de Powershell. Si me conecto remotamente a la máquina a través de mstsc, ejecuto Powershell como administrador y ejecuto el script de Windows Update, funciona bien. Si me conecto remotamente a la máquina a través de mstsc, ejecuto Powershell SIN elegir la ejecución como administrador y ejecuto el script, obtendré un montón de errores en esta línea: "Excepción llamando a" Descargar "con argumento" 0 ":" Excepción de HRESULT: 0x80240044 ""

Esto solo sucede si lo ejecuto SIN privilegios de administrador.

El script que estoy ejecutando es este: http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html

Ahora, cuando me conecto remotamente a la máquina usando Enter-PSSession e intento ejecutar el script, obtengo errores, pero son un poco diferentes. Están en esta línea: "Excepción llamando" CreateUpdateDownloader "con argumento (s)" 0 ":" Acceso denegado. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED)) ""

Estoy abierto a sugerencias sobre qué podría estar causando este problema, pero creo que lo tengo resuelto. Creo que la sesión de Powershell debe ejecutarse con privilegios elevados. Sé cómo hacer esto mientras me remoto a través de mstsc, pero no he podido encontrar una manera de hacerlo a través de Enter-PSSession. He buscado en Google y en Google, pero no he encontrado nada. Si alguien pudiera ayudar a arrojar algo de luz sobre esto, sería muy apreciado.

Jon
fuente
No estoy en una consola para probar, pero si obtienes una sesión remota de etsn (Enter-PSSession), entonces puedes escribir "Start-Process PowerShell –Verb RunAs" y presionar Enter. ¿Eso te da el aviso del administrador? Si es así, cambiaré esto a una respuesta que pueda aceptar. Si no, lo probaré cuando vuelva a mi escritorio.
TheCleaner
Posible respuesta aquí serverfault.com/a/474031/23300
Nic

Respuestas:

3

Cuando ejecuta comandos de forma remota, se ejecutan con privilegios administrativos porque solo los administradores pueden ejecutar comandos de forma remota en powershell. El error, "Excepción llamando" CreateUpdateDownloader "con argumento (s)" 0 ":" Acceso denegado. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED)) "" no es un error nativo de PowerShell, indica que esta línea está fallando: $ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader (), esta línea está tratando de crear el objeto updatedownloader usando $ UpdateSession = New-Object -ComObject Microsoft.Update.Session objeto.

Sin saber A DÓNDE el descargador intenta comunicarse, solo puedo asumir que la nave nodriza puede indicar que las credenciales que tiene mientras está conectado de forma remota a un servidor podrían ser objeto de un proxy. Esta es una práctica de seguridad común, los usuarios conectados remotamente a las máquinas no pueden descargar elementos directamente de Internet (sin importar qué tan confiable sea la fuente).

Espero que esto ayude, Chris

Christopher Douglas
fuente
2

Para ejecutar comandos remotos de PowerShell, DEBE ejecutarse como administrador en la máquina desde la que ejecuta los comandos, al menos en la configuración lista para usar. Esta es una limitación documentada de la comunicación remota de PowerShell, aunque es posible relajar los valores predeterminados si está determinado, pero eso implicará realizar cambios en la configuración de PowerShell.

Para la ejecución remota, ¿está pasando credenciales utilizando el parámetro -credentials? p.ej

Enter-PSSession -Credential(Get-Credential) -ComputerName <remotehost>
Stephen Connolly
fuente
Con Windows 2012 Server y sin una configuración de AD, intente usar 'MicrosoftAccount \ Administrator' como credenciales y use la contraseña remota del administrador. Usar el nombre de usuario totalmente calificado sin AD siempre me ha parecido una molestia innecesaria.
fuero
1

Con respecto a las actualizaciones de Windows en servidores remotos, pude hacer que funcionara configurando un punto final JEA en el servidor remoto para que se ejecute como una cuenta virtual local.

Desde https://docs.microsoft.com/en-us/powershell/jea/session-configurations :

Cuenta virtual local

Si las funciones compatibles con este punto final JEA se utilizan para administrar la máquina local, y una cuenta de administrador local es suficiente para ejecutar los comandos con éxito, debe configurar JEA para usar una cuenta virtual local. Las cuentas virtuales son cuentas temporales que son exclusivas de un usuario específico y solo duran la duración de su sesión de PowerShell. En un servidor miembro o estación de trabajo, las cuentas virtuales pertenecen al grupo de Administradores de la computadora local y tienen acceso a la mayoría de los recursos del sistema. En un controlador de dominio de Active Directory, las cuentas virtuales pertenecen al grupo de administradores de dominio del dominio.

jsmitty
fuente
Esto me ayudó! ¡Gracias por recordarme que JEA es genial!
B_Dubb42