Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você pode executar comandos em um ou centenas de computadores com um único comando do PowerShell. O Windows PowerShell oferece suporte à computação remota usando várias tecnologias, incluindo WMI, RPC e WS-Management.
O PowerShell oferece suporte à comunicação remota WMI, WS-Management e SSH. No PowerShell 7 e superior, o RPC é suportado apenas no Windows.
Para obter mais informações sobre comunicação remota no PowerShell, consulte os seguintes artigos:
Comunicação remota do Windows PowerShell sem necessidade de configuração
Muitos cmdlets do Windows PowerShell têm o parâmetro ComputerName que permite coletar dados e alterar configurações em um ou mais computadores remotos. Esses cmdlets usam protocolos de comunicação variados e funcionam em todos os sistemas operacionais Windows sem nenhuma configuração especial.
Esses cmdlets incluem:
- Reiniciar-Computador
- Conexão de teste
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Processo
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
Normalmente, os cmdlets que suportam 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 em sua sessão, digite:
Get-Command | Where-Object {
$_.Parameters.Keys -contains "ComputerName" -and
$_.Parameters.Keys -notcontains "Session"
}
Remotização do Windows PowerShell
Ao usar o protocolo WS-Management, o Windows PowerShell permite executar remotamente qualquer comando do Windows PowerShell em um ou mais computadores. Você pode estabelecer conexões persistentes, iniciar sessões interativas e executar scripts em computadores remotos.
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 Sobre requisitos remotos.
Depois de configurar o remoting do Windows PowerShell, muitas estratégias de remoting estão disponíveis. Este artigo lista apenas alguns deles. Para obter mais informações, consulte Sobre o Remoto.
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 remoto. Todos os comandos digitados no prompt são executados no computador remoto e os resultados sã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:
Executar um comando remoto
Para executar um comando em um ou mais computadores, 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 -ScriptBlock {Get-UICulture}
A saída é devolvida 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 vários computadores remotos, use o parâmetro FilePath do cmdlet Invoke-Command. O script deve estar ligado ou acessível ao computador local. Os resultados são devolvidos 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
Estabelecer uma conexão persistente
Use o cmdlet New-PSSession para criar uma sessão persistente em um computador remoto. O exemplo a seguir cria sessões remotas em Server01 e Server02. Os objetos de sessão são armazenados na variável $s.
$s = New-PSSession -ComputerName Server01, Server02
Agora que as sessões estão estabelecidas, você pode executar qualquer comando nelas. E como as sessões são persistentes, você pode coletar dados de um comando e usá-los em outro.
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 $h variável é criada em cada uma das sessões no $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 com outros comandos na mesma sessão. Os resultados são exibidos no computador local. Por exemplo:
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
Comunicação remota avançada
O PowerShell inclui cmdlets que permitem:
- Configurar e criar sessões remotas a partir dos pontos local e remoto
- Crie sessões personalizadas e restritas
- Importar comandos de uma sessão remota que realmente são executados implicitamente na sessão remota
- Configurar a segurança de uma sessão remota
O PowerShell no Windows inclui um provedor WSMan. O provedor cria uma unidade de WSMan: que permite navegar por uma hierarquia de definições de configuração no computador local e nos computadores remotos.
Para obter mais informações sobre o provedor WSMan, consulte WSMan Provider e About WS-Management Cmdletsou no console do Windows PowerShell, digite Get-Help WSMan.
Para obter mais informações, consulte:
- Perguntas frequentes sobre comunicação remota do PowerShell
- Registar-ConfiguraçãoDeSessãoPS
- Importação-PSSession
Para obter ajuda com erros de acesso remoto, consulte about_Remote_Troubleshooting.