about_PSSessions

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

TÓPICO

about_PSSessions

DESCRIÇÃO BREVE

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

DESCRIÇÃO LONGA

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

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

Você também pode criar uma PSSession no computador local e executar comandos nela. Uma PSSession local usa a infraestrutura de comunicação remota do Windows PowerShell para criar e manter a PSSession.

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

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

Observação

As PSSessions usam a infraestrutura de comunicação remota do Windows 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 versões posteriores do Windows, para criar uma PSSession em um computador local, você deve iniciar o Windows PowerShell com a opção "Executar como administrador".

O QUE É UMA SESSÃO?

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

Toda vez que você iniciar o Windows PowerShell, é criada uma sessão na qual você pode executar comandos. 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 apenas na sessão e serão excluídos quando ela terminar.

Você também pode criar sessões gerenciadas pelo usuário, conhecidas como "sessões do Windows PowerShell" ou "PSSessions," no computador local ou em um computador remoto. Assim como na sessão padrão, você pode executar comandos em uma PSSession, e adicionar e criar itens.

No entanto, ao contrário da sessão que é iniciada automaticamente, você pode controlar as PSSessions que cria. Você pode obter, criar, configurar, remover, desconectar e reconectar as PSSessions e, em seguida, executar vários comandos na mesma PSSession. A PSSession continuará disponível até você excluí-la ou ela expirar.

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

Se você usar o parâmetro ComputerName do cmdlet Invoke-Command ou Enter-PSSession para executar um comando remoto ou iniciar uma sessão interativa, o Windows PowerShell cria uma sessão temporária no computador remoto e fecha a sessão assim que o comando estiver concluído ou assim que terminar a sessão interativa. Você não pode controlar essas sessões temporárias e não pode usá-las para mais de um só comando ou uma só sessão interativa.

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

POR QUE USAR UMA PSSESSION?

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

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

Quando você usa o parâmetro ComputerName do Invoke-Command ou Enter-PSSession, o Windows PowerShell estabelece uma conexão temporária com o computador remoto e, em seguida, fecha a conexão assim que o comando estiver concluído. Qualquer elemento de dados que você criar será perdido quando a conexão for fechada.

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

COMO CRIAR UMA PSSESSION

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

Por exemplo, o comando a seguir cria uma nova PSSession no computador Server01.

        New-PSSession -ComputerName Server01

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

Por exemplo, o comando a seguir cria uma nova 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 cmdlet New-PSSession. Digite os nomes dos computadores remotos em uma lista separada por vírgulas.

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

        New-PSSession -ComputerName Server01, Server02, Server03

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

COMO OBTER PSSESSIONS

Para obter as PSSessions que foram criadas em sua sessão atual, use o cmdlet Get-PSSession sem o parâmetro ComputerName. Get-PSSession retorna o mesmo tipo de objeto que New-PSSession. Insira o corpo da seção aqui.

O comando a seguir obtém todas as PSSessions que foram criadas na sessão atual.

        Get-PSSession

A exibição padrão da PSSessions mostra sua ID e um nome padrão de exibiçã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 a PSSessions em uma variável. O comando a seguir obtém as PSSessions e as salva na variável $ps123.

        $ps123 = Get-PSSession

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

        $ps01 = Get-PSSession -Id 1

A partir do Windows PowerShell 3.0, as PSSessions são mantidas no computador remoto. Para obter PSSessions que foram criadas em determinados computadores remotos, use o parâmetro ComputerName do cmdlet Get-PSSession. Os comandos a seguir obtêm as PSSessions que foram criadas no computador remoto Server01. Isso inclui PSSessions criadas na sessão atual e em outras sessões do computador local ou outros computadores.

        Get-PSSession -ComputerName Server01

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

COMO EXECUTAR COMANDOS EM UMA PSSESSION

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

Por exemplo, para executar um comando Get-ChildItem ("dir") em todas as três PSSessions salvas na variável $ps123, digite:

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

COMO EXCLUIR PSSESSIONS

Quando tiver terminado com a PSSession, use o cmdlet Remove-PSSession excluí-la e liberar os recursos que ela estava usando.

        Remove-PSSession -Session $ps

- ou -

        Remove-PSSession -Id 1

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

       Remove-PSSession -ComputerName Server01 -Id 1

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

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

OS CMDLETS DA PSSESSION

    Cmdlet                Description
    -----------------     ------------------------------------------------------
    New-PSSession         Creates a new PSSession on a local or remote computer.

    Get-PSSession         Gets the PSSessions in the current session.

    Remove-PSSession      Deletes the PSSessions in the current session.

    Enter-PSSession       Starts an interactive session.

    Exit-PSSession        Ends an interactive session.
    
    Disconnect-PSSession  Disconnects a PSSession from the current session.

    Connect-PSSession     Connects a PSSession to the current session.
     
    Receive-PSSession     Gets the results of commands that ran in a disconnected
                          session.

Para obter uma lista dos cmdlets da PSSession, digite:

       get-help *-PSSession

PARA OBTER MAIS INFORMAÇÕES

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

CONSULTE TAMBÉM

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Connect-PSSession

Disconnect-PSSession

Enter-PSSession

Exit-PSSession

Get-PSSession

Invoke-Command

New-PSSession

Remove-PSSession