Executando comandos remotos na máquina de destino via WinRM no ambiente de grupo de trabalho

Executando comandos remotos na máquina de destino via WinRM no ambiente de grupo de trabalho

Estou ansioso para executar comandos especiais em uma máquina de destino em minha rede local (grupo de trabalho, sem ingresso no domínio).

As máquinas foram previamente configuradas com Enable-PSremotingetc. para tolerar o gerenciamento remoto do Windows para que possamos executar um comando na máquina alvo da seguinte forma.

Os comandos funcionam bem, exceto que se eu quiser iniciar alguns comandos especiais como start-process, eles não serão executados como a máquina local.

Por exemplo, se eu executar na minha máquina local:

> Start-Process -Filepath "cmd.exe"

ele inicia o processo cmd. Se eu fizer isso remotamente, assim

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

A janela cmd não é executada na máquina de destino.

Isso me permitiria instalar alguns pacotes especiais em minhas máquinas de destino que exigem algumas configurações de GUI do autoit e que não podem ser feitas apenas via PowerShell, como pausar atualizações e configurar aplicativos de navegador padrão por meio da GUI. Caso contrário, algumas configurações normais funcionam bem (configurações de firewall, gravação de arquivos, ativação de configurações de rede, etc.)

Muito obrigado.

Responder1

Invoke-Commanddestina-se a comandos não interativos. IIRC você não receberá um prompt interativo ao usá-lo e, claro, se quiser iniciar um programa no computador remoto, ele deverá existir lá antes de iniciá-lo.

Se você quiser usar uma sessão interativa no computador remoto, você deve usarEnter-PSSessionem vez de:

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

Dentro desta sessão, você poderá iniciar um prompt do cmd se realmente precisar dele.

Se você precisar executar vários comandos relacionados que não são interativos, o New-PSSessioncmdlet pode ser interessante, junto com o Invoke-Command -Session $session.

informação relacionada