about_Remote

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

TÓPICO

about_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 que mostram a você como executar diferentes tipos de comando remoto. Depois de testar esses comandos básicos, leia os tópicos da Ajuda que descrevem cada cmdlet que é usado em um desses comandos. Os tópicos fornecem os detalhes e explicam como você pode modificar os comandos para atender às suas necessidades.

Observação

Para usar o Windows PowerShell® com comunicação remota, os computadores locais e remotos devem estar configurados para isso. 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 uma sessão interativa inicia, os comandos digitados são executados no computador remoto, do mesmo modo como se eles fossem digitados diretamente no computador remoto. Você pode se conectar a um único 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 permitem que você obtenha objetos de computadores remotos.

Como esses cmdlets não usam Windows PowerShell com conexão remota baseado em WS-Management, você pode usar o parâmetro ComputerName desses cmdlets em qualquer computador que esteja executando o Windows PowerShell. Os computadores não precisam ser configurados para Windows PowerShell com comunicação remota e os computadores não precisam atender aos requisitos de 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 comando a seguir obtém os serviços no computador Server01 remoto:

        Get-Service -ComputerName Server01

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

        Get-Command | where { $_.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 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 destina-se à situação em que você executa um comando único ou vários comandos não relacionados em um ou vários 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, o Windows PowerShell estabelece uma conexão apenas para o comando. Em seguida, ele fecha a conexão quando o comando é concluído. Quaisquer variáveis ou funções que são definidas no comando serão perdidas.

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

        $s = New-PSSession -ComputerName Server01, Server02

COMO EXECUTAR COMANDOS EM UM PSSESSION

Com um PSSession, você pode executar uma série de comandos remotos que compartilham dados, como funções, aliases e os valores das variáveis. Para executar comandos em um 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 nos 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 o PSSession usa uma conexão persistente, você pode executar outro comando no mesmo 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ários PSSessions. Os seguintes comandos criam PSSessions nos computadores Server01, Server02 e Server03 e executem um comando Get-Culture em cada um dos PSSessions.

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

Para incluir a lista de computadores locais 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 em computadores S1 e S2: Inserir corpo da seção aqui.

        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 os arquivos.

COMO PARAR UM COMANDO REMOTO

Para interromper um comando, pressione CTRL + C. A solicitação de interrupção é passada para o computador remoto no qual o comando remoto é encerrado.

PARA OBTER MAIS INFORMAÇÕES

-- Para obter informações sobre os requisitos de 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 a comunicação remota funciona, como gerenciar dados remotos, configurações especiais, problemas de segurança e outras perguntas frequentes, consulte about_Remote_FAQ.

– Para ajudar a resolver 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 Windows PowerShell, consulte about_Jobs.

PALAVRAS-CHAVE

about_Remoting

CONSULTE TAMBÉM

about_PSSessions

about_Remote_Disconnected_Sessions

about_Remote_Requirements

about_Remote_FAQ

about_Remote_TroubleShooting

about_Remote_Variables

Enter-PSSession

Invoke-Command

New-PSSession