about_Remote

Breve descrição

Descreve como executar comandos remotos no PowerShell.

Descrição longa

Você pode executar comandos remotos em um ou vários computadores remotos usando uma conexão temporária ou persistente. Você também pode iniciar uma sessão interativa com um único computador remoto.

Nota

Para usar a comunicação remota do PowerShell, você deve configurar os computadores locais e remotos para comunicação remota. Para obter mais informações, consulte about_Remote_Requirements.

Como iniciar uma sessão interativa

A maneira mais fácil de executar comandos remotos é iniciar uma sessão interativa com um computador remoto.

Quando a sessão é iniciada, os comandos digitados são executados no computador remoto, como se você os tivesse digitado diretamente no computador remoto. Você pode se conectar a apenas um computador em cada sessão interativa.

Para iniciar uma sessão interativa, use o Enter-PSSession cmdlet. O comando a seguir inicia uma sessão interativa com o computador Server01:

Enter-PSSession Server01

O PowerShell altera o prompt de comando para incluir o nome do computador remoto.

Server01\PS>

Agora, você pode digitar comandos no computador Server01.

Para encerrar a sessão interativa, digite:

Exit-PSSession

Para obter mais informações, consulte Enter-PSSession.

Como executar um comando remoto

Para executar outros comandos em computadores remotos, use o Invoke-Command cmdlet.

Para executar um único comando ou alguns comandos não relacionados, use o parâmetro ComputerName de Invoke-Command para especificar os computadores remotos. Use o parâmetro ScriptBlock para especificar o comando.

Por exemplo, o comando a seguir executa um Get-Culture comando no computador Server01.

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

Como criar uma conexão persistente

Quando você usa o parâmetro ComputerName do cmdlet, o Invoke-Command PowerShell estabelece uma conexão temporária com o computador remoto. Ele fecha a conexão quando o comando é concluído. Todas as variáveis ou funções definidas nesta sessão temporária são perdidas.

Para criar uma conexão persistente com um computador remoto, use o New-PSSession cmdlet. Por exemplo, o comando a seguir cria PSSessions nos computadores Server01 e Server02 e, em seguida, salva as PSSessions na $s variável.

$s = New-PSSession -ComputerName Server01, Server02

Como executar comandos em uma PSSession

Com um PSSession, você pode executar uma série de comandos remotos que compartilham dados, como funções, aliases e valores de variáveis. Para executar comandos em um PSSession, use o parâmetro Session do Invoke-Command cmdlet.

Por exemplo, o comando a seguir usa o Invoke-Command cmdlet para executar um Get-Process comando no PSSessions nos computadores Server01 e Server02. O comando salva os processos em uma $p variável em cada PSSession.

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

Como o PSSession usa uma conexão persistente, você pode executar outro comando no mesmo PSSession que usa a $p variável. O comando a seguir conta o número de processos salvos no $p.

Invoke-Command -Session $s -ScriptBlock {$p.count}

Como executar um comando remoto em vários computadores

Para executar um comando remoto em vários computadores, digite todos os nomes de computador no valor do parâmetro ComputerName de Invoke-Command. Separe os nomes por vírgulas.

Por exemplo, o comando a seguir executa um Get-Culture comando em três computadores:

Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}

Você também pode executar um comando em várias PSSessions. Os comandos a seguir criam PSSessions nos computadores Server01, Server02 e Server03 e, em seguida, executam um comando em cada um Get-Culture dos PSSessions.

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

Para incluir a lista de computadores do computador local, digite o nome do computador local, digite um ponto (.) ou digite localhost.

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

Como executar um script em computadores remotos

Para executar um script local em computadores remotos, use o parâmetro FilePath de Invoke-Command. Não é necessário copiar nenhum ficheiro. Por exemplo, o comando a seguir executa o Sample.ps1 script nos computadores S1 e S2:

Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

O PowerShell retorna os resultados do script para o computador local.

Como parar um comando remoto

Para interromper um comando, pressione Ctrl+c. O PowerShell passa a solicitação de interrupção para o computador remoto onde encerra o comando remoto.

Para obter mais informações

  • Para obter informações sobre os requisitos do sistema para comunicação remota, consulte about_Remote_Requirements.

  • Para obter ajuda na formatação da saída remota, consulte about_Remote_Output.

  • Para obter informações sobre como a comunicação remota funciona, como gerenciar dados remotos, configurações especiais, problemas de segurança e outras perguntas frequentes, consulte Perguntas frequentes sobre comunicação remota do PowerShell.

  • Para obter ajuda com a resolução de erros de comunicação remota, consulte about_Remote_Troubleshooting.

  • Para obter informações sobre PSSessions e conexões persistentes, consulte about_PSSessions.

  • Para obter informações sobre trabalhos em segundo plano do PowerShell, consulte about_Jobs.

Consulte também