Comunicação Remota do Windows PowerShell
O sistema de comunicação remota do Windows PowerShell, que usa o protocolo WS-Management, permite executar qualquer comando do Windows PowerShell em um ou mais computadores remotos. Permite estabelecer conexões persistentes, iniciar sessões interativas 1: 1 e executar scripts em vários computadores. Para usar o sistema remoto do Windows PowerShell, o computador remoto deve estar configurado para gerenciamento remoto. Depois de configurar o sistema de comunicação remota do Windows PowerShell, muitas estratégias de comunicação remota ficam disponíveis para você. O restante deste documento lista apenas alguns deles.
Iniciar uma sessão interativa
Para iniciar uma sessão interativa com um único computador remoto, use o cmdlet Enter-PSSession. Por exemplo, para iniciar uma sessão interativa com o computador remoto Server01, digite:
Enter-PSSession Server01
O prompt de comando é alterado para exibir o nome do computador ao qual você está conectado. A partir de então, todos os comandos digitados no prompt serão executados no computador remoto e os resultados serão exibidos no computador local.
Para finalizar a sessão interativa, digite:
Exit-PSSession
Executar um comando remoto
Para executar qualquer comando em um ou mais computadores remotos, use o cmdlet Invoke-Command. Por exemplo, para executar um comando Get-UICulture nos computadores remotos Server01 e Server02, digite:
invoke-command -computername Server01, Server02 {get-UICulture}
A saída é retornada ao seu computador.
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) server01.corp.fabrikam.com
1033 en-US English (United States) server02.corp.fabrikam.com
Executar um script
Para executar um script em um ou mais computadores remotos, use o parâmetro FilePath do cmdlet Invoke-Command. O script deve estar ativado ou acessível no seu computador local. Os resultados são retornados ao seu computador local.
Por exemplo, o comando a seguir executa o script DiskCollect.ps1 nos computadores remotos Server01 e Server02.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
Estabelecer uma conexão persistente
Para executar uma série de comandos relacionados que compartilham dados, crie uma sessão no computador remoto e use o cmdlet Invoke-Command para executar comandos na sessão que você criar. Para criar uma sessão remota, use o cmdlet New-PSSession.
Por exemplo, o comando a seguir cria uma sessão remota no computador Server01 e outra sessão remota no computador Server02. Ele salva os objetos da sessão na variável $ s.
$s = new-pssession -computername Server01, Server02
Agora que as sessões foram estabelecidas, você pode executar qualquer comando nelas. E como as sessões são persistentes, você pode coletar dados em um comando e usá-los em um comando subsequente.
Por exemplo, o comando a seguir executa um comando Get-Hotfix nas sessões na variável $ s e salva os resultados na variável $ h. A variável $ h é criada em cada uma das sessões em $ s, mas não existe na sessão local.
invoke-command -session $s {$h = get-hotfix}
Agora você pode usar os dados na variável $ h em comandos subsequentes, como o seguinte. Os resultados são exibidos no computador local.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }