Você pode executar comandos em um ou vários computadores com um único comando do Windows PowerShell. O Windows PowerShell oferece suporte à computação remota usando várias tecnologias, inclusive WMI, RPC e WS-Management.

Comunicação remota sem configuração

Muitos cmdlets do Windows PowerShell têm o parâmetro ComputerName, que o permite coletar dados e alterar configurações em um ou mais computadores remotos. Eles usam diversas tecnologias de comunicação e muitos deles funcionam em todos os sistemas operacionais Windows aos quais o Windows PowerShell oferece suporte, sem nenhuma configuração especial.

Esses cmdlets incluem:

Normalmente, os cmdlets que oferecem suporte à comunicação remota sem configuração especial têm o parâmetro ComputerName e não têm o parâmetro Session. Para localizar esses cmdlets na sua sessão, digite:

get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

Comunicação remota do Windows PowerShell

A comunicação remota do Windows PowerShell, que usa o protocolo WS-Management, permite executar qualquer comando do Windows PowerShell em um ou vários computadores remotos. Ele permite que você estabeleça conexões persistentes, inicie sessões interativas 1:1 e execute scripts em vários computadores.

Para usar a comunicação remota do Windows PowerShell, o computador remoto deve ser configurado para gerenciamento remoto. Para obter mais informações, incluindo instruções, consulte about_Remote_Requirements.

Depois que você configurar a comunicação remota do Windows PowerShell, muitas estratégias de comunicação remota serão disponibilizadas. O restante desse documento lista apenas algumas delas. Para obter mais informações, consulte about_Remote e about_Remote_FAQ.

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 desse ponto, qualquer comando que você digitar no prompt será executado no computador remoto, e os resultados serão exibidos no computador local.

Para encerrar a sessão interativa, digite:

exit-pssession

Para obter mais informações sobre os cmdlets Enter-PSSession e Exit-PSSession, consulte Enter-PSSession e 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 será retornada ao 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

Para obter mais informações sobre o cmdlet Invoke-Command, consulte Invoke-Command.

Executar um script

Para executar um script em um ou vários computadores remotos, use o parâmetro FilePath do cmdlet Invoke-Command. O script deve estar ativo ou acessível no computador local. Os resultados são retornados ao 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

Para obter mais informações sobre o cmdlet Invoke-Command, consulte Invoke-Command.

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 criada. 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 estão estabelecidas, você pode executar qualquer comando nelas. 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"

Comunicação remota avançada

O gerenciamento remoto do Windows PowerShell começa aqui. Com os cmdlets instalados no Windows PowerShell, você pode estabelecer e configurar sessões remotas nos computadores locais e remotos, criar sessões personalizadas e restritas, permitir que os usuários importem comandos de uma sessão remota que, na verdade, são executados implicitamente nessa sessão, configurar a segurança de uma sessão remota e muito mais.

Para simplificar a configuração remota, o Windows PowerShell inclui um provedor de WS-Management. A unidade WSMAN: criada pelo provedor permite que você navegue por uma hierarquia de configurações nos computador locais e remotos. Para obter mais informações sobre o provedor de WS-Management, consulte WSMan Provider e about_WS-Management_Cmdlets ou, no console do Windows PowerShell, digite "get-help wsman".

Para obter mais informações, consulte about_Remote_FAQ, New-PSSessionConfiguration e Import-PSSession. Para obter ajuda para solucionar erros de comunicação remota, consulte about_Remote_Troubleshooting.

See Also




Sumário