about_PSSession_Details

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

TÓPICO

about_PSSession_Details

DESCRIÇÃO BREVE

Fornece informações detalhadas sobre as sessões do Windows PowerShell e a função exercida por eles nos comandos remotos.

DESCRIÇÃO LONGA

Uma sessão é um ambiente no qual Windows PowerShell é executado. Uma sessão é criada para você sempre que você inicia o Windows PowerShell. Você pode criar outras sessões, chamadas "sessões Windows PowerShell" ou "PSSessions" em seu computador ou em outro computador.

Ao contrário das sessões que Windows PowerShell cria para você, você controla e gerencia o PSSessions que cria.

Os PSSessions desempenham um papel importante na computação remota. Quando você cria um PSSession que está conectado a um computador remoto, Windows PowerShell estabelece uma conexão persistente com o computador remoto para dar suporte ao PSSession. Você pode usar o PSSession para executar uma série de comandos, funções e scripts que compartilham dados.

Este tópico fornece informações detalhadas sobre as sessões e PSSessions no Windows PowerShell. Para obter informações básicas sobre as tarefas que podem ser executadas com sessões, consulte about_PSSessions.

SOBRE SESSÕES

Tecnicamente, uma sessão é um ambiente no qual Windows PowerShell é executado. Cada sessão inclui uma instância do mecanismo de System.Management.Automation e um programa de host no qual Windows PowerShell é executado. O host pode ser familiar ao console Windows PowerShell ou outro programa que executa comandos, como Cmd.exe ou um programa desenvolvido para host do Windows PowerShell, como o ISE (Ambiente de Script Integrado)Windows PowerShell. Da perspectiva do Windows, uma sessão é um processo do Windows no computador de destino.

Cada sessão é configurada de forma independente. Ela inclui suas próprias propriedades, sua própria política de execução e seus próprios perfis. O ambiente que existe quando a sessão é criada persiste por seu tempo de vida, mesmo se você alterar o ambiente no computador. Todas as sessões são criadas em um escopo global, até mesmo as sessões que você cria em um script.

Você pode executar apenas um comando (ou o pipeline de comando) em uma sessão de uma só vez. Um segundo comando executado de forma síncrona (um de cada vez) aguarda até quatro minutos para que o primeiro comando seja concluído. Um segundo comando que é executado de forma assíncrona (simultaneamente) falha.

SOBRE OS PSSESSIONS

Uma sessão é criada para você sempre que você inicia o Windows PowerShell. E, Windows PowerShell cria sessões temporárias para executar comandos individuais. No entanto, você também pode criar sessões (chamadas "sessões Windows PowerShell" ou "PSSessions") que você controla e gerencia.

Os PSSessions são essenciais para comandos remotos. Se você usar o parâmetro ComputerName dos cmdlets Invoke-Command ou Enter-PSSession, o Windows PowerShell estabelece uma sessão temporária para executar o comando e, em seguida, fecha a sessão assim que o comando ou a sessão interativa for concluída.

No entanto, se você usar o cmdlet New-PSSession para criar um PSSession, o Windows PowerShell estabelece uma sessão persistente no computador remoto no qual você pode executar vários comandos ou sessões interativas. Os PSSessions que você cria permanecem abertos e disponíveis para uso até você excluí-los ou até que você feche a sessão na qual eles foram criados.

Quando você cria um PSSession em um computador remoto, o sistema cria um processo do PowerShell no computador remoto e estabelece uma conexão do computador local para o processo no computador remoto. Quando você cria um PSSession no computador local, o novo processo e as conexões são criados no computador local.

QUANDO É NECESSÁRIO UM PSSESSION?

Os cmdlets Invoke-Command e Enter-PSSession têm parâmetros ComputerName e Session. Você pode usar ambos para executar um comando remoto.

Use o parâmetro ComputerName para executar um único comando ou uma série de comandos não relacionadas em um ou vários computadores.

Para executar comandos que compartilham dados, você precisa de uma conexão persistente com o computador remoto. Nesse caso, crie um PSSession e, em seguida, use o parâmetro Session para executar comandos em PSSession.

Muitos outros cmdlets que obtêm dados de computadores remotos, como Get-Process, Get-Service, Get-EventLog e Get-WmiObject têm apenas um parâmetro ComputerName. Eles usam tecnologias diferentes de Windows PowerShell com comunicação remota para coletar dados. Esses cmdlets não tem um parâmetro Session, mas você pode usar o cmdlet Invoke-Command para executar esses comandos em um PSSession.

COMO CRIAR UM PSSESSION?

Para criar um PSSession, use o cmdlet New-PSSession. Você pode usar o New-PSSession para criar um PSSession em um computador local ou remoto.

POSSO CRIAR UM PSSESSION EM QUALQUER COMPUTADOR?

Para criar um PSSession que está conectado a um computador remoto, o computador deve estar configurado com comunicação remota no Windows PowerShell. O usuário atual deve ser um membro do grupo Administradores no computador remoto ou o usuário atual deve ser capaz de fornecer as credenciais de um membro do grupo Administradores. Para obter mais informações, consulte about_Remote_Requirements.

POSSO VER MEUS PSSESSIONS EM OUTRAS SESSÕES?

A partir de Windows PowerShell 3.0, o parâmetro ComputerName do cmdlet Get-PSSession obtém os PSSessions que você criou nos computadores remotos especificados.

Os PSSessions ativos são mantidos no computador remoto (o "lado do servidor" de uma conexão) e você pode obtê-los de qualquer sessão em qualquer computador.

Por exemplo, se você cria um PSSession do computador Server01 no computador Server02 e, em seguida, alterna para o computador Server03, você pode usar um comando semelhante ao seguinte para ativar a sessão.

      Get-PSSession -ComputerName Server02

Mesmo se você se desconectar da sessão, a sessão é mantida no computador remoto até ser excluída ou expirar.

Em Windows PowerShell 2.0, você pode obter apenas os PSSessions que você criou na sessão atual. Não é possível obter PSSessions que você criou em outras sessões.

Para obter mais informações, consulte o Get-PSSession.

POSSO VER OS PSSESSIONS QUE OUTROS CRIARAM NO MEU COMPUTADOR?

Você pode obter e gerenciar apenas os PSSessions que outros criaram somente se você puder fornecer as credenciais do usuário que criou o PSSession ou a configuração da sessão que usa o PSSession inclui as credenciais de RunAs. Caso contrário, você pode obter, se conectar, usar e gerenciar apenas os PSSessions que você criou.

POSSO ME CONECTAR A UM PSSESSION EM UM COMPUTADOR DIFERENTE?

A partir de Windows PowerShell 3.0, os PSSessions são independentes das sessões em que eles foram criados. Os PSSessions ativos são mantidos no computador no "lado do servidor" de uma conexão ou remoto.

Você pode usar o cmdlet Disconnect-PSSession para desconectar de um PSSession. O PSSession é desconectado da sessão local, mas é mantido no computador remoto. Os comandos continuam em execução no PSSession desconectado. Você pode fechar o Windows PowerShell e desligar o computador de origem sem interromper o PSSession.

Em seguida, até mesmo horas mais tarde, você pode usar o cmdlet Get-PSSession para obter o PSSession e o cmdlet Connect-PSSession para se conectar ao PSSession de uma nova sessão em um computador diferente.

Para obter mais informações, consulte about_Remote_Disconnected_Sessions (https://go.microsoft.com/fwlink/?LinkID=252847).

O QUE ACONTECE COM MEU PSSESSION SE MEU COMPUTADOR PARAR?

Os PSSessions desconectados são independentes das sessões em que eles foram criados. Se você desconectar um PSSession e, em seguida, fechar o computador de origem, o PSSession é mantido no computador remoto.

Além disso, o Windows PowerShell tenta recuperar PSSessions ativos que foram desconectados acidentalmente, por exemplo, uma reinicialização de computador, uma queda de energia temporária ou interrupção de rede. O Windows PowerShell tenta manter ou recuperar o PSSession em um estado aberto, se a sessão original ainda estiver disponível, ou para um estado desconectado, se não estiver disponível.

Um PSSession "ativo" é aquele que está executando os comandos. Se um PSSession estiver conectado (não está desconectado) e comandos estiverem em execução no PSSession quando a sessão conectada fechar, o Windows PowerShell tenta manter o PSSession no computador remoto. No entanto, se nenhum comando está sendo executado no PSSession, o Windows PowerShell fecha o PSSession quando a sessão conectada fechar.

Para obter mais informações, consulte about_Remote_Disconnected_Sessions (https://go.microsoft.com/fwlink/?LinkID=252847).

É POSSÍVEL EXECUTAR UM TRABALHO EM SEGUNDO PLANO EM UM PSSESSION?

Sim. Um trabalho em segundo plano é um comando que executa de forma assíncrona em segundo plano sem interagir com a sessão atual. Quando você envia um comando para iniciar um trabalho, o comando retorna um objeto de trabalho, mas o trabalho continua a ser executado em segundo plano até sua conclusão.

Para iniciar um trabalho em segundo plano em um computador local, use o comando Start-Job. Você pode executar o trabalho em segundo plano em uma conexão temporária (usando o parâmetro ComputerName) ou em um PSSession (usando o parâmetro Session).

Para iniciar um trabalho em segundo plano em um computador remoto, use o cmdlet Invoke-Command com seu parâmetro AsJob ou use o cmdlet Invoke-Command para executar um comando Start-Job em um computador remoto. Ao usar o parâmetro AsJob, você pode usar os parâmetros ComputerName ou Session.

Ao usar Invoke-Command para executar um comando Start-Job, você deve executar o comando em um PSSession. Se você usar o parâmetro ComputerName, o Windows PowerShell termina a conexão quando o objeto de trabalho retorna e o trabalho é interrompido.

Para obter mais informações, consulte about_Jobs.

É POSSÍVEL EXECUTAR UMA SESSÃO INTERATIVA?

Sim. Para iniciar uma sessão interativa com um único computador remoto, use o cmdlet Enter-PSSession. Em uma sessão interativa, os comandos digitados são executados no computador remoto, do mesmo modo que se eles fossem digitados diretamente no computador remoto.

Você pode executar a sessão interativa em segundo plano em uma sessão temporária (usando o parâmetro ComputerName) ou em um PSSession (usando o parâmetro Session). Se você usar um PSSession, o PSSession retém os dados dos comandos anteriores e o PSSession retém todos os dados gerados durante a sessão interativa para uso em comandos posteriores.

Quando você terminar a sessão interativa, o PSSession permanece aberto e disponível para uso.

Para obter mais informações, consulte Enter-PSSession e Exit-PSSession.

OS PSSESSIONS DEVEM SER EXCLUÍDOS?

Sim. Um PSSession é um processo, que é um ambiente independente que usa a memória e outros recursos, mesmo quando você não estiver usando ele. Quando tiver terminado um PSSession, exclua-o. Se você criar vários PSSessions, feche os que você não estiver usando e mantenha somente aqueles que estão atualmente em uso.

Para excluir PSSessions, use o cmdlet Remove-PSSession. Ele exclui os PSSessions e libera todos os recursos que estavam utilizando.

Você também pode usar o parâmetro IdleTimeOut de New-PSSessionOption para fechar um PSSession ocioso após um intervalo especificado por você. Para obter mais informações, consulte New-PSSessionOption.

Se você salvar um objeto PSSession em uma variável e excluir o PSSession ou deixá-lo atingir o tempo limite, a variável ainda conterá o objeto PSSession, mas o PSSession não estará ativo e não poderá ser usado ou reparado.

TODAS SESSÕES E PSSESSIONS SÃO PARECIDOS?

Não. Os desenvolvedores podem criar sessões personalizadas que incluem somente os provedores selecionados e cmdlets. Se um comando funciona em uma sessão, mas não em outra, talvez seja porque a sessão é restrita.

CONSULTE TAMBÉM

about_Jobs

about_PSSessions

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Invoke-Command

New-PSSession

Get-PSSession

Remove-PSSession

Enter-PSSession

Exit-PSSession