about_PSSessions

Descrição breve

Descreve sessões do PowerShell (PSSessions) e explica como estabelecer uma conexão persistente com um computador remoto.

Descrição longa

Para executar comandos do PowerShell em um computador remoto, você pode usar o parâmetro ComputerName de um cmdlet ou pode criar uma sessão do PowerShell (PSSession) e executar comandos no PSSession.

Quando você cria um PSSession, o PowerShell estabelece uma conexão persistente com o computador remoto. Use um PSSession para executar uma série de comandos relacionados em um computador remoto. Os comandos executados no mesmo PSSession podem compartilhar dados, como valores de variáveis, aliases e funções.

Você também pode criar um PSSession no computador local e executar comandos nele. Um PSSession local usa a infraestrutura remota do PowerShell para criar e manter o PSSession.

A partir do Windows PowerShell 3.0, as PSSessions no Windows são independentes das sessões nas quais são criadas. PSSessions ativos são mantidos no computador remoto (ou no computador na extremidade remota ou "lado do servidor" da conexão). Como resultado, no Windows, você pode se desconectar de um PSSession em um computador Windows remoto e reconectar-se a ele mais tarde a partir do mesmo computador ou de um computador Windows diferente.

Este tópico explica como criar, usar, obter e excluir PSSessions. Para obter informações mais avançadas, consulte about_PSSession_Details.

Observação: o PSSessions usa a infraestrutura remota do PowerShell. Para usar PSSessions, os computadores locais e remotos devem ser configurados para comunicação remota. Para obter mais informações, consulte about_Remote_Requirements.

No Windows Vista e em versões posteriores do Windows, para criar um PSSession em um computador local, você deve iniciar o PowerShell com a opção "Executar como administrador".

O que é uma sessão?

Uma sessão é um ambiente no qual o PowerShell é executado.

Cada vez que você inicia o PowerShell, uma sessão é criada para você e você pode executar comandos na sessão. Você também pode adicionar itens à sua sessão, como módulos e snap-ins, e pode criar itens, como variáveis, funções e aliases. Esses itens existem somente na sessão e são excluídos quando a sessão termina.

Você também pode criar sessões gerenciadas pelo usuário, conhecidas como "sessões do PowerShell" ou "PSSessions", no computador local ou em um computador remoto. Como a sessão padrão, você pode executar comandos em um PSSession e adicionar e criar itens. No entanto, ao contrário da sessão que é iniciada automaticamente, você pode controlar os PSSessions que você criar. Você pode obtê-los, criá-los, configurá-los e removê-los, desconectá-los e reconectá-los e executar vários comandos no mesmo PSSession. O PSSession permanece disponível até que você o exclua ou ele atinja o tempo limite.

Normalmente, você cria um PSSession para executar uma série de comandos relacionados em um computador remoto. Quando você cria um PSSession em um computador remoto, o PowerShell estabelece uma conexão persistente com o computador remoto para oferecer suporte à sessão.

Se você usar o parâmetro ComputerName do Invoke-Command cmdlet ou Enter-PSSession para executar um comando remoto ou iniciar uma sessão interativa, o PowerShell criará uma sessão temporária no computador remoto e fechará a sessão assim que o comando for concluído ou assim que a sessão interativa terminar. Não é possível controlar essas sessões temporárias e não é possível usá-las para mais de um único comando ou uma única sessão interativa.

No PowerShell, a "sessão atual" é a sessão em que você está trabalhando. A "sessão atual" pode se referir a qualquer sessão, incluindo uma sessão temporária ou um PSSession.

Por que usar um PSSession?

Use um PSSession quando precisar de uma conexão persistente com um computador remoto. Com um PSSession, você pode executar uma série de comandos que compartilham dados, como o valor de variáveis, o conteúdo de uma função ou a definição de um alias.

Você pode executar comandos remotos sem criar um PSSession. Use o parâmetro ComputerName de cmdlets habilitados para remoto para executar um único comando ou uma série de comandos não relacionados em um ou vários computadores.

Quando você usa o parâmetro ComputerName de Invoke-Command ou Enter-PSSession, o PowerShell estabelece uma conexão temporária com o computador remoto e fecha a conexão assim que o comando é concluído. Todos os elementos de dados criados são perdidos quando a conexão é fechada.

Outros cmdlets que têm um parâmetro ComputerName , como Get-Eventlog e Get-WmiObject, usam tecnologias remotas diferentes para coletar dados. Nenhum cria uma conexão persistente como um PSSession.

Como criar um PSSession

Para criar um PSSession, use o New-PSSession cmdlet. Para criar o PSSession em um computador remoto, use o parâmetro ComputerName do New-PSSession cmdlet.

Por exemplo, o comando a seguir cria um novo PSSession no computador Server01.

New-PSSession -ComputerName Server01

Quando você envia o comando, New-PSSession cria o PSSession e retorna um objeto que representa o PSSession. Você pode salvar o objeto em uma variável ao criar o PSSession ou pode usar um Get-PSSession comando para obter o PSSession posteriormente.

Por exemplo, o comando a seguir cria um novo PSSession no computador Server01 e salva o objeto resultante na variável $ps.

$ps = New-PSSession -ComputerName Server01

Como criar PSSessions em vários computadores

Para criar PSSessions em vários computadores, use o parâmetro ComputerName do New-PSSession cmdlet. Digite os nomes dos computadores remotos em uma lista separada por vírgula.

Por exemplo, para criar PSSessions nos computadores Server01, Server02 e Server03, digite:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession cria um PSSession em cada um dos computadores remotos.

Como obter PSSessions

Para obter os PSSessions que foram criados em sua sessão atual, use o Get-PSSession cmdlet sem o parâmetro ComputerName . Get-PSSession Retorna o mesmo tipo de objeto que New-PSSession retorna.

O comando a seguir obtém todos os PSSessions que foram criados na sessão atual.

Get-PSSession

A exibição padrão do PSSessions mostra sua ID e um nome de exibição padrão. Você pode atribuir um nome de exibição alternativo ao criar a sessão.

Id   Name       ComputerName    State    ConfigurationName
---  ----       ------------    -----    ---------------------
1    Session1   Server01        Opened   Microsoft.PowerShell
2    Session2   Server02        Opened   Microsoft.PowerShell
3    Session3   Server03        Opened   Microsoft.PowerShell

Você também pode salvar o PSSessions em uma variável. O comando a seguir obtém os PSSessions e os salva na variável $ps 123.

$ps123 = Get-PSSession

Ao usar os cmdlets PSSession, você pode fazer referência a um PSSession por sua ID, por seu nome ou por sua ID de instância (um GUID). O comando a seguir obtém um PSSession por sua ID e o salva na variável $ps 01.

$ps01 = Get-PSSession -Id 1

A partir do Windows PowerShell 3.0, as PSSessions são mantidas no computador remoto. Para obter PSSessions que você criou em computadores remotos específicos, use o parâmetro ComputerName do Get-PSSession cmdlet. O comando a seguir obtém as PSSessions que você criou no computador remoto Server01. Isso inclui PSSessions criados na sessão atual e em outras sessões no computador local ou em outros computadores.

Get-PSSession -ComputerName Server01

No Windows PowerShell 2.0, Get-PSSession obtém apenas os PSSessions que foram criados na sessão atual. Ele não obtém PSSessions que foram criados em outras sessões ou em outros computadores, mesmo se as sessões estiverem conectadas e estiverem executando comandos no computador local.

Como executar comandos em um PSSession

Para executar um comando em um ou mais PSSessions, use o Invoke-Command cmdlet. Use o parâmetro Session para especificar o parâmetro PSSessions e o parâmetro ScriptBlock para especificar o comando.

Por exemplo, para executar um comando ("dir") em cada um Get-ChildItem dos três PSSessions salvos na variável $ps 123, digite:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

Como excluir PSSessions

Quando você terminar com o PSSession, use o Remove-PSSession cmdlet para excluir o PSSession e liberar os recursos que ele estava usando.

Remove-PSSession -Session $ps

or

Remove-PSSession -Id 1

Para remover um PSSession de um computador remoto, use o parâmetro ComputerName do Remove-PSSession cmdlet.

Remove-PSSession -ComputerName Server01 -Id 1

Se você não excluir o PSSession, o PSSession permanecerá disponível para uso até atingir o tempo limite.

Você também pode usar o parâmetro IdleTimeout do cmdlet para definir um tempo de New-PSSessionOption expiração para um PSSession ocioso. Para obter mais informações, consulte New-PSSessionOption.

Os cmdlets PSSession

Para obter uma lista de cmdlets PSSession, digite:

Get-Help *-PSSession
  • Connect-PSSession: Conecta um PSSession à sessão atual
  • Disconnect-PSSession: Desconecta um PSSession da sessão atual
  • Enter-PSSession: inicia uma sessão interativa
  • Exit-PSSession: Encerra uma sessão interativa
  • Get-PSSession: Obtém as PSSessions na sessão atual
  • New-PSSession: Cria um novo PSSession em um computador local ou remoto
  • Receive-PSSession: obtém os resultados de comandos executados em uma sessão desconectada
  • Remove-PSSession: Exclui as PSSessions na sessão atual

Observação

Sessões desconectadas só são suportadas no Windows. Os Connect-PSSessioncmdlets , Disconnect-PSSessione Receive-PSSession só estão disponíveis no Windows. Para obter mais informações sobre sessões desconectadas, consulte about_Remote_Disconnected_Session

Para obter mais informações

Para obter mais informações sobre PSSessions, consulte about_PSSession_Details.

Confira também