Sobre o Remote
DESCRIÇÃO BREVE
Descreve como executar comandos remotos no Windows PowerShell.
DESCRIÇÃO LONGA
Você pode executar comandos remotos em um único computador ou em vários computadores usando uma conexão temporária ou persistente. Você também pode iniciar uma sessão interativa com um único computador remoto.
Este tópico fornece uma série de exemplos para mostrar como executar diferentes tipos de comando remoto. Depois de experimentar esses comandos básicos, leia os tópicos da Ajuda que descrevem cada cmdlet usado nesses comandos. Os tópicos fornecem os detalhes e explicam como você pode modificar os comandos para atender às suas necessidades.
Observação: para usar Windows PowerShell comunicação remota, os computadores locais e remotos devem ser configurados para comunicação remota. Para obter mais informações, consulte about_Remote_Requirements.
COMO INICIAR UMA SESSÃO INTERATIVA (ENTER-PSSESSION)
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 que você digita são executados no computador remoto, assim como você os digitou 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 cmdlet Enter-PSSession. O comando a seguir inicia uma sessão interativa com o computador Server01:
Enter-PSSession Server01
O prompt de comando é alterado para indicar que você está conectado ao computador Server01.
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 USAR CMDLETS QUE TÊM UM PARÂMETRO COMPUTERNAME PARA OBTER DADOS REMOTOS
Vários cmdlets têm um parâmetro ComputerName que permite obter objetos de computadores remotos.
Como esses cmdlets não usam a comunicação remota Windows PowerShell baseada em WS Management, você pode usar o parâmetro ComputerName desses cmdlets em qualquer computador que esteja executando Windows PowerShell. Os computadores não precisam ser configurados para Windows PowerShell comunicação remota e os computadores não precisam atender aos requisitos do sistema para comunicação remota.
Os seguintes cmdlets têm um parâmetro ComputerName:
Clear-EventLog Limit-EventLog
Get-Counter New-EventLog
Get-EventLog Remove-EventLog
Get-HotFix Restart-Computer
Get-Process Show-EventLog
Get-Service Stop-Computer
Get-WinEvent Test-Connection
Get-WmiObject Write-EventLog
Por exemplo, o seguinte comando obtém os serviços no computador remoto Server01:
Get-Service -ComputerName Server01
Normalmente, os cmdlets que dão suporte à comunicação remota sem configuração especial têm um parâmetro ComputerName e não têm um 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'
}
COMO EXECUTAR UM COMANDO REMOTO
Para executar outros comandos em computadores remotos, use o cmdlet Invoke-Command.
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 comando Get-Culture no computador Server01.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
O parâmetro ComputerName foi projetado para a situação em que você executa um único comando ou vários comandos não relacionados em um ou muitos computadores. Para estabelecer uma conexão persistente com um computador remoto, use o parâmetro Session.
COMO CRIAR UMA CONEXÃO PERSISTENTE (PSSESSION)
Quando você usa o parâmetro ComputerName do cmdlet Invoke-Command, Windows PowerShell estabelece uma conexão apenas para o comando . Em seguida, fecha a conexão quando o comando for concluído. Todas as variáveis ou funções definidas no comando são perdidas.
Para criar uma conexão persistente com um computador remoto, use o cmdlet New-PSSession. Por exemplo, o comando a seguir cria PSSessions nos computadores Server01 e Server02 e salva as PSSessions na variável $s.
$s = New-PSSession -ComputerName Server01, Server02
COMO EXECUTAR COMANDOS EM UMA PSSESSION
Com uma 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 uma PSSession, use o parâmetro Session do cmdlet Invoke-Command.
Por exemplo, o comando a seguir usa o cmdlet Invoke-Command para executar um comando Get-Process nas PSSessions nos computadores Server01 e Server02. O comando salva os processos em uma variável $p em cada PSSession.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
Como a PSSession usa uma conexão persistente, você pode executar outro comando na mesma PSSession que usa a variável $p. O comando a seguir conta o número de processos salvos em $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 com vírgulas.
Por exemplo, o comando a seguir executa um comando Get-Culture 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 Get-Culture em cada uma das PSSessions.
$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Para incluir a lista local de computadores, 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.
Por exemplo, o comando a seguir executa o script Sample.ps1 nos computadores S1 e S2:
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
Os resultados do script são retornados ao computador local. Você não precisa copiar nenhum arquivo.
COMO PARAR UM COMANDO REMOTO
Para interromper um comando, pressione CTRL+C. A solicitação de interrupção é passada para o computador remoto em que termina 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 de saída remota, consulte about_Remote_Output.
Para obter informações sobre como funciona a comunicação remota, como gerenciar dados remotos, configurações especiais, problemas de segurança e outras perguntas frequentes, consulte about_Remote_FAQ.
Para obter ajuda na resolução de erros de comunicação remota, consulte about_Remote_Troubleshooting.
Para obter informações sobre PSSessionsions e conexões persistentes, consulte about_PSSessions.
Para obter informações sobre Windows PowerShell trabalhos em segundo plano, consulte about_Jobs.
KEYWORDS
about_Remoting