¿Existe alguna forma de ejecutar regedit en varias computadoras remotas con Win10 sin UAC?

¿Existe alguna forma de ejecutar regedit en varias computadoras remotas con Win10 sin UAC?

¿Hay alguna manera de ejecutar regedit en varias computadoras remotas sin que aparezca UAC en Windows10? la /slínea de comando on no funciona en mi computadora de prueba con Windows 10 (estoy seguro de que funcionará en mis sistemas Win7, pero la mayoría de mis computadoras cliente son Win10).

En definitiva el objetivo es

  1. importe un archivo de registro a HKLM para elevar la política de ejecución de PowerShell a sin restricciones,
  2. use Powershell para habilitar la protección/restauración del sistema,
  3. use PowerShell, cree un punto de restauración y finalmente
  4. importe un archivo de registro para volver a establecer la política de ejecución en Restringido o Firmado remoto. (Todo esto se hace como una tarea previa al parche, por cierto).

En mi computadora de prueba, todo esto funciona bien con la excepción de que regedit... incluso con el /sparámetro... no se ejecutará sin una ventana emergente de UAC en Windows 10. He visto esto en mi computadora de prueba Win10.

Intenté ejecutar PowerShell elevado mediante un archivo bat:

powershell.exe -ExecutionPolicy Bypass -File .\MyScript.ps1

y

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy unrestricted -Force' -Verb RunAs}"

pero ambos fallan (es decir, se deniega el acceso, la política de ejecución de PowerShell no está elevada).

Importar el archivo de registro y luego ejecutar mi script de Powershell es lo más cercano al éxito que he logrado.

También probé esto a través de Sysinternals psexec, basado en otras soluciones buscadas [es decir, psexec llama a reg.exe para importar] pero eso tiene su propio conjunto de problemas (psexec necesita un registro importado para el EULA, por lo que el mismo problema, no un solución).

Tomando prestado de eso, también intenté ejecutar el siguiente comando:

C:\Windows\System32\REG.exe ADD HKLM\\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f

...Pero eso sigue apareciendo con "ERROR: Nombre de clave no válido". Probablemente he estado trabajando en esto demasiado tiempo (ya son 3 días) y solo necesito otro par de ojos. ¿Alguien puede ayudar?

Respuesta1

Debido a que intentó varios intentos diferentes, en realidad hay varios problemas que señaló en su publicación que podrían requerir una respuesta. No ha dejado claro cómo ejecuta ninguno de estos comandos de forma remota. Ninguno de los comandos que mostró realmente hace nada en una computadora remota. Todos se ejecutan en la computadora local. Sin embargo, mencionaste la posibilidad de probar PSExec.

Tampoco conozco ninguna situación en la que UAC interfiera con la ejecución remota de comandos. Por lo tanto, solo puedo asumir que está ejecutando los comandos en su computadora local y experimentando indicaciones de UAC. Pero lo está haciendo como preparación para ejecutar los comandos de forma remota.

Por lo tanto, intentaré brindarle soporte básico de ejecución remota que lo llevará por el camino correcto. Toda ejecución remota de comandos requiere la apertura de ciertos puertos del firewall. Así que tenlo en cuenta a medida que avanzas.

Powershell ya tiene un mecanismo de ejecución remota de comandos/scripts.

  • Puede utilizar el -ComputerNameinterruptor para ciertos comandos para ejecutarlos en un sistema remoto.
  • Puede iniciar una sesión remota interactiva con Enter-PSSession <ComputerName>y Exit-PSSession.
  • Puede utilizar el Invoke-Command -ComputerName <ComputerName>comando para ejecutar cualquier script o comando de forma remota.

Ninguno de estos métodos está sujeto a la restricción de la Política de ejecución, a menos que inicie una sesión interactiva de Powershell y luego intente ejecutar un script.

Estos comandos se ejecutarán en la computadora remota utilizando su cuenta de usuario actual. Si no es administrador en la máquina remota, deberá proporcionar adicionalmente un PSCredentialobjeto que sea administrador mediante el -Credentialconmutador.

https://docs.microsoft.com/en-us/powershell/scripting/core-powershell/running-remote-commands?view=powershell-6

Alternativamente, también puede usar PSExec para ejecutar comandos o ejecutables remotos. Es preferible ejecutarlos en el contexto del SISTEMA para evitar CUALQUIER problema de permisos, pero generalmente tienen éxito si simplemente los ejecuta en el contexto de un administrador en la máquina remota.

  • Omita el mensaje EULA con el -accepteulainterruptor
  • Ejecutar en el contexto del SISTEMA con el -sinterruptor
  • A veces, es necesario utilizar el -iinterruptor (interactivo) para ejecutar correctamente ciertos archivos ejecutables de terceros.

Los comandos ejecutados mediante PSExec no están sujetos a restricciones de UAC. Sin embargo, si intenta ejecutar Powershell de forma remota a través de PSExec, que a su vez intenta ejecutar un script, la política de ejecución se interpondrá a menos que también utilice el -ExecutionPolicy Bypassconmutador. Sin embargo, usar PSExec para ejecutar Powershell de forma remota, que a su vez ejecuta un script, es un camino realmente largo para lograr lo que necesita hacer.

Nuevamente, PSExec establecerá una conexión con la computadora remota utilizando el contexto de usuario actualmente conectado. Si no es administrador en la computadora remota, deberá especificar un nombre de usuario/contraseña que utilice los interruptores -uy -p.

https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

Una última cosa, siempre debe recordar dónde se ejecuta el comando (local o remotamente) y darse cuenta de que cualquier recurso al que intente acceder se realiza desde la perspectiva de dónde se ejecuta el comando. Por ejemplo, si ejecuto el comando C:\MyBatch.baten una computadora remota, entonces C:\MyBatch.battiene que existir en la computadora remota.

información relacionada