Executando comandos remotosRunning Remote Commands

Você pode executar comandos em uma ou centenas de computadores com um único comando do PowerShell.You can run commands on one or hundreds of computers with a single PowerShell command. O Windows PowerShell oferece suporte à computação remota usando diversas tecnologias, incluindo WMI, RPC e WS-Management.Windows PowerShell supports remote computing by using various technologies, including WMI, RPC, and WS-Management.

O PowerShell Core dá suporte a WMI, WS-Management e comunicação remota de SSH.PowerShell Core supports WMI, WS-Management, and SSH remoting. Não há compatibilidade com a RPC no PowerShell 6.In PowerShell 6, RPC is no longer supported. No PowerShell 7 e versões superiores, o RPC só é compatível com o Windows.In PowerShell 7 and above, RPC is supported only in Windows.

Para saber mais sobre a comunicação remota no PowerShell Core, consulte os seguintes artigos:For more information about remoting in PowerShell Core, see the following articles:

Comunicação remota do Windows PowerShell sem configuraçãoWindows PowerShell Remoting Without Configuration

Muitos cmdlets do Windows PowerShell têm o parâmetro ComputerName que permite coletar dados e alterar as configurações de um ou mais computadores remotos.Many Windows PowerShell cmdlets have the ComputerName parameter that enables you to collect data and change settings on one or more remote computers. Esses cmdlets usam protocolos de comunicação variados e funcionam em todos os sistemas operacionais Windows sem qualquer configuração especial.These cmdlets use varying communication protocols and work on all Windows operating systems without any special configuration.

Esses cmdlets incluem:These cmdlets include:

Normalmente, os cmdlets que dão suporte à comunicação remota sem configuração especial têm um parâmetro ComputerName, e não um parâmetro Session.Typically, cmdlets that support remoting without special configuration have the ComputerName parameter and don't have the Session parameter. Para localizar esses cmdlets em sua sessão, digite:To find these cmdlets in your session, type:

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

Comunicação remota do Windows PowerShellWindows PowerShell Remoting

Usando o protocolo WS-Management, a comunicação remota do Windows PowerShell permite executar qualquer comando do Windows PowerShell em um ou vários computadores remotos.Using the WS-Management protocol, Windows PowerShell remoting lets you run any Windows PowerShell command on one or more remote computers. Você pode estabelecer conexões persistentes, iniciar sessões interativas e executar scripts em computadores remotos.You can establish persistent connections, start interactive sessions, and run scripts on remote computers.

Para usar a comunicação remota do Windows PowerShell, o computador remoto deve ser configurado para gerenciamento remoto.To use Windows PowerShell remoting, the remote computer must be configured for remote management. Para obter mas informações, incluindo instruções consulte Sobre requisitos remotos.For more information, including instructions, see About Remote Requirements.

Depois de configurar a comunicação remota do Windows PowerShell, muitas estratégias de comunicação remota ficam disponíveis para você.Once you have configured Windows PowerShell remoting, many remoting strategies are available to you. Este artigo lista algumas delas.This article lists just a few of them. Saiba mais em Sobre comunicação remota.For more information, see About Remote.

Iniciar uma sessão interativaStart an Interactive Session

Para iniciar uma sessão interativa com um único computador remoto, use o cmdlet Enter-PSSession.To start an interactive session with a single remote computer, use the Enter-PSSession cmdlet. Por exemplo, para iniciar uma sessão interativa com o computador remoto Server01, digite:For example, to start an interactive session with the Server01 remote computer, type:

Enter-PSSession Server01

O prompt de comando muda para exibir o nome do computador remoto.The command prompt changes to display the name of the remote computer. Quaisquer comandos digitados no prompt são executados no computador remoto, e os resultados são exibidos no computador local.Any commands that you type at the prompt run on the remote computer and the results are displayed on the local computer.

Para encerrar a sessão interativa, digite:To end the interactive session, type:

Exit-PSSession

Para saber mais sobre os cmdlets Enter-PSSession e Exit-PSSession, consulte:For more information about the Enter-PSSession and Exit-PSSession cmdlets, see:

Executar um comando remotoRun a Remote Command

Para executar um comando em um ou mais computadores, use o cmdlet Invoke-Command.To run a command on one or more computers, use the Invoke-Command cmdlet. Por exemplo, para executar um comando Get-UICulture nos computadores remotos Server01 e Server02, digite:For example, to run a Get-UICulture command on the Server01 and Server02 remote computers, type:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

O resultado é retornado no seu computador.The output is returned to your computer.

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 scriptRun a Script

Para executar um script em um ou vários computadores remotos, use o parâmetro FilePath do cmdlet Invoke-Command.To run a script on one or many remote computers, use the FilePath parameter of the Invoke-Command cmdlet. O script deve estar ativado ou acessível para o computador local.The script must be on or accessible to your local computer. Os resultados são retornados no computador local.The results are returned to your local computer.

Por exemplo, o comando a seguir executa o script DiskCollect.ps1 nos computadores remotos Server01 e Server02.For example, the following command runs the DiskCollect.ps1 script on the remote computers, Server01 and Server02.

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1

Estabelecer uma conexão persistenteEstablish a Persistent Connection

Use o cmdlet New-PSSession para criar uma sessão persistente em um computador remoto.Use the New-PSSession cmdlet to create a persistent session on a remote computer. O exemplo a seguir cria sessões remotas no Server01 e Server02.The following example creates remote sessions on Server01 and Server02. Os objetos de sessão são armazenados na variável $s.The session objects are stored in the $s variable.

$s = New-PSSession -ComputerName Server01, Server02

Agora que as sessões foram estabelecidas, você pode executar qualquer comando nelas.Now that the sessions are established, you can run any command in them. E como as sessões são persistentes, você pode coletar dados de um comando e usá-los em outro comando.And because the sessions are persistent, you can collect data from one command and use it in another command.

Por exemplo, o comando a seguir executa um comando Get-HotFix em sessões na variável $s e salva os resultados na variável $h.For example, the following command runs a Get-HotFix command in the sessions in the $s variable and it saves the results in the $h variable. A variável $h é criada em cada uma das sessões em $s, mas não existe na sessão local.The $h variable is created in each of the sessions in $s, but it doesn't exist in the local session.

Invoke-Command -Session $s {$h = Get-HotFix}

Agora você pode usar os dados na variável $h com outros comandos na mesma sessão.Now you can use the data in the $h variable with other commands in the same session. Os resultados são exibidos no computador local.The results are displayed on the local computer. Por exemplo:For example:

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NTAUTHORITY\SYSTEM"}}

Comunicação remota avançadaAdvanced Remoting

O gerenciamento remoto do Windows PowerShell começa aqui.Windows PowerShell remote management just begins here. Usando os cmdlets instalados com o Windows PowerShell, você pode estabelecer e configurar sessões remotas tanto de extremidades locais quanto remotas, criar sessões personalizadas e restritas, permitir que os usuários importem os comandos de uma sessão remota executado implicitamente na própria sessão remota, configurar a segurança de uma sessão remota e muito mais.By using the cmdlets installed with Windows PowerShell, you can establish and configure remote sessions both from the local and remote ends, create customized and restricted sessions, allow users to import commands from a remote session that actually run implicitly on the remote session, configure the security of a remote session, and much more.

O Windows PowerShell inclui um provedor de WSMan.Windows PowerShell includes a WSMan provider. O provedor cria uma unidade WSMAN: que permite a navegação por uma hierarquia de definições de configuração no computador local e nos computadores remotos.The provider creates a WSMAN: drive that lets you navigate through a hierarchy of configuration settings on the local computer and remote computers.

Para saber mais sobre o provedor WSMan, confira WSMan Provider e Sobre cmdlets WS-Management ou, no console do Windows PowerShell, digite Get-Help wsman.For more information about the WSMan provider, see WSMan Provider and About WS-Management Cmdlets, or in the Windows PowerShell console, type Get-Help wsman.

Para obter mais informações, consulte:For more information, see:

Para obter ajuda com erros de comunicação remota, consulte about_Remote_Troubleshooting.For help with remoting errors, see about_Remote_Troubleshooting.

Consulte TambémSee Also