Ejecutar comandos remotos en la máquina de destino a través de WinRM en un entorno de grupo de trabajo

Ejecutar comandos remotos en la máquina de destino a través de WinRM en un entorno de grupo de trabajo

Espero ejecutar comandos especiales en una máquina de destino en mi red local (grupo de trabajo, sin unirme a un dominio).

Las máquinas se han configurado previamente con Enable-PSremotingetc. para tolerar la administración remota de Windows de modo que podamos ejecutar un comando en la máquina de destino de la siguiente manera.

Los comandos funcionan bien excepto que si quiero iniciar algunos comandos especiales como start-process, no se ejecutan como la máquina local.

Por ejemplo, si ejecuto en mi máquina local:

> Start-Process -Filepath "cmd.exe"

inicia el proceso cmd. Si lo hago a distancia, así

Invoke-Command -Computername "my-target-ip" -ScriptBlock {Start-Process -Filepath "cmd.exe"} -Credential get-credential

La ventana cmd no se ejecuta en la máquina de destino.

Esto me permitiría instalar algunos paquetes especiales en mis máquinas de destino que requieren algunas configuraciones de GUI automáticas y que no se pueden realizar simplemente a través de PowerShell, como pausar actualizaciones y configurar aplicaciones de navegador estándar a través de la GUI. De lo contrario, algunas configuraciones normales funcionan bien (configuraciones del firewall, escritura de archivos, habilitación de configuraciones de red, etc.)

Muchas gracias.

Respuesta1

Invoke-Commandestá destinado a comandos no interactivos. IIRC, no recibirá un mensaje interactivo al usarlo y, por supuesto, si desea iniciar un programa en la computadora remota, debe existir allí antes de iniciarlo.

Si desea utilizar una sesión interactiva en la computadora remota, debe usarEnter-PSSessionen cambio:

Enter-PSSession -Computer "remote" -Credential (Get-Credential)

Dentro de esta sesión debería poder iniciar un mensaje de cmd si realmente lo necesita.

Si necesita ejecutar varios comandos relacionados que no son interactivos, el New-PSSessioncmdlet podría resultar de interés, junto con Invoke-Command -Session $session.

información relacionada