TÓPICO
    about_Remote

DESCRIÇÃO RESUMIDA
    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. 
    Também é possível iniciar uma sessão interativa com um único 
    computador remoto.
    
    Este tópico fornece uma série de exemplos que mostram como 
    executar diferentes tipos de comandos remotos. Depois que você 
    conhecer 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 de 
    acordo com as suas necessidades.

    Observação: para usar a comunicação remota do Windows PowerShell, 
		os computadores local e remoto devem ser configurados 
		para comunicação remota. Para obter mais informações, 
		consulte about_Remote_Requirements. 
          

 COMO INICIAR UMA SESSÃO INTERATIVA (ENTER-PSSESSION)

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

     Quando a sessão inicia, os comandos que você digita 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 cmdlet Enter-PSSession.
     O seguinte comando inicia uma sessão interativa com o computador 
     Server01:

	enter-pssession server01

     O prompt de comando altera 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 a obtenção 
    de objetos de computadores remotos. 

    Como esses cmdlets não usam a comunicação remota do Windows 
    PowerShell baseada 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 a comunicação remota do Windows PowerShell 
    e os computadores não têm de atender aos requisitos do sistema para 
    a 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       Show-Service
        Get-WinEvent      Stop-Computer
        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 fornecem suporte à comunicação remota sem a configuração 
    especial têm um parâmetro ComputerName e não têm um parâmetro Session. Para 
    localizar esses cmdlets na 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 do 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 criado para situações na qual 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,
    o Windows PowerShell estabelece uma conexão apenas para o comando. 
    Em seguida, fecha a conexão quando o comando for concluído. 
    Qualquer variável ou função definida no comando é perdida.

    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 essas 
    sessões 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 os 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 dos 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 A COMANDO REMOTO EM VÁRIOS COMPUTADORES

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

    Por exemplo, o seguinte comando 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 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 de computadores locais, 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 seguinte comando 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 para o 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 
   é transmitida ao computador remoto, onde o comando remoto é finalizado.
   


PARA OBTER MAIS INFORMAÇÕES

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

    -- Para obter ajuda sobre como formatar a 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 ajuda sobre como resolver erros de comunicação remota, 
       consulte about_Remote_Troubleshooting.

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

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

PALAVRAS-CHAVE
    about_Remoting

CONSULTE TAMBÉM
    about_PSSessions 
    about_Remote_Requirements 
    about_Remote_FAQ 
    about_Remote_TroubleShooting 
    Enter-PSSession  
    Invoke-Command 
    New-PSSession 

    




Sumário