Вы находитесь на странице: 1из 4

TÓPICO

about_PSSession_Details

DESCRIÇÃO RESUMIDA
Fornece informações detalhadas sobre as sessões do Windows
PowerShell e o papel que elas desempenham em comandos remotos.

DESCRIÇÃO LONGA
Uma sessão é um ambiente no qual o Windows PowerShell é executado.
Uma sessão é criada sempre que você inicia o Windows PowerShell. É possível
criar sessões adicionais, chamadas "sessões do Windows PowerShell" ou
"PSSessions" em seu computador ou em outro computador.

Diferentemente das sessões que o Windows PowerShell cria para você,


você controla e gerencia as PSSessions que cria.

As PSSessions têm um papel importante na computação remota.


Quando você cria uma PSSession conectada a um computador remoto,
o Windows PowerShell estabelece uma conexão persistente com
o computador remoto para oferecer suporte à PSSession. Você pode
usar a PSSession para executar uma série de comandos, funções
e scripts que compartilham dados.

Este tópico fornece informações detalhadas sobre sessões


e PSSessions no Windows PowerShell. Para obter informações básicas
sobre as tarefas que você pode executar com as sessões, consulte
about_PSSessions.

SOBRE SESSÕES
Tecnicamente, uma sessão é um ambiente de execução no qual o Windows
PowerShell é executado. Cada sessão inclui uma instância do mecanismo
de System.Management.Automation e um programa host no qual o Windows
PowerShell é executado. O host pode ser o console do Windows
PowerShell ou outro programa que execute comandos, como o Cmd.exe,
ou um programa criado para ser o host do Windows PowerShell, como
o Windows PowerShell ISE (Integrated Scripting Environment).
Do ponto de vista do Windows, uma sessão
é um processo do Windows no computador de destino.

Cada sessão é configurada independentemente. Ela inclui suas próprias


propriedades, sua própria diretiva de execução e seus próprios perfis.
O ambiente que existe quando a sessão é criada permanece por todo seu
tempo de vida, até mesmo se você alterar o ambiente no computador.
Todas as sessões são criadas em um escopo global, até mesmo sessões
que você cria em um script.

Você pode executar apenas um comando (ou pipeline de comando) de


cada vez em uma sessão. Uma execução de segunda comando (um de
cada vez) espera até quatro minutos para que o primeiro comando
seja concluído. Uma segunda execução de comando de forma assíncrona
(simultaneamente) falha.

SOBRE AS PSSESSIONS
Uma sessão é criada toda vez que você inicia o Windows PowerShell.
E o Windows PowerShell cria sessões temporárias para executar comandos
individuais. Porém, você também pode criar sessões (chamadas "sessões
do Windows PowerShell" ou "PSSessions") que você controla e gerencia.

As PSSessions são fundamentais aos comandos remotos. Se você usar


o parâmetro ComputerName do cmdlet Invoke-Command ou Enter-PSSession,
o Windows PowerShell estabelecerá uma sessão temporária para executar
o comando e fechará 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 uma


PSSession, o Windows PowerShell estabelecerá uma sessão persistente
no computador remoto no qual você pode executar vários comandos ou
sessões interativas. As PSSessions que você cria permanecem abertas
e disponíveis para uso até que você as exclua ou feche a sessão na
qual elas foram criadas.

Quando você cria uma PSSession em um computador remoto, o sistema


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

QUANDO EU PRECISO DE UMA PSSESSION?


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

Use o parâmetro ComputerName para executar um único comando ou


uma série de comandos não relacionados, em um ou mais computadores.

Para executar comandos que compartilham dados, você precisa de


uma conexão persistente com o computador remoto. Nesse caso, crie uma
PSSession e use o parâmetro Session para executar comandos na PSSession.

Muitos outros cmdlets que obtêm dados de computadores remotos,


como Get-Process, Get-Service, Get-EventLog e Get-WmiObject têm
só um parâmetro ComputerName. Eles usam tecnologias diferentes
da comunicação remota do Windows PowerShell para coletar dados
remotamente. Esses cmdlets não têm um parâmetro Session, mas você
pode usar o cmdlet Invoke-Command para executar esses comandos em uma
PSSession.

COMO EU CRIO UMA PSSESSION?


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

EU POSSO CRIAR UMA PSSESSION EM QUALQUER COMPUTADOR?


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

EU POSSO CONSULTAR AS PSSESSIONS QUE OUTROS CRIARAM EM MEU COMPUTADOR?


Não. Você pode obter e gerenciar apenas as PSSessions que você
criou na sessão atual. Você não pode ver as PSSessions que outros
criaram, até mesmo se eles executarem comandos no computador local.
EU POSSO EXECUTAR UM TRABALHO EM SEGUNDO PLANO EM UMA PSSESSION?
Sim. Um trabalho em segundo plano é um comando executado de forma
assíncrona "no segundo plano" sem interagir com a sessão atual.
Quando você enviar um comando para iniciar um trabalho, o comando
retornará um objeto de trabalho, mas o trabalho continuará sendo
executado em segundo plano até ser concluído.

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 uma 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 o parâmetro ComputerName ou Session.

Ao usar Invoke-Command para executar um comando Start-Job, você


deverá executar o comando em uma PSSession. Se você usar o parâmetro
ComputerName, o Windows PowerShell terminará a conexão quando
o objeto de trabalho retornar e o trabalho for interrompido.

Para obter mais informações, consulte about_Jobs.

EU POSSO EXECUTAR UMA SESSÃO INTERATIVA?


Sim. Para iniciar uma sessão interativa com um computador remoto,
use o cmdlet Enter-PSSession. Em uma sessão interativa, os
comandos que você digita são executados no computador remoto, da
mesma forma como se eles tivessem sido digitados diretamente no
computador remoto.

Você pode executar uma sessão interativa em uma sessão temporária


(usando o parâmetro ComputerName) ou em uma PSSession (usando
o parâmetro Session). Se você usar uma PSSession, a PSSession
reterá os dados de comandos anteriores e todos os dados gerados
durante a sessão interativa para uso nos comandos posteriores.

Quando você encerra a sessão interativa, a PSSession permanece


aberta e disponível para uso.

Para obter mais informações, consulte "Enter-PSSession"


e "Exit-PSSession".

EU DEVO EXCLUIR AS PSSESSIONS?


Sim. Uma PSSession é um processo, que é um ambiente autossuficiente que usa
memória e outros recursos, até mesmo quando não está sendo usado.
Quando você encerra uma PSSession, deverá excluí-la. Se você criar várias
PSSessions, feche as que você não estiver usando e mantenha somente as
que estiverem em uso.

Para excluir PSSessions, use o cmdlet Remove-PSSession. Ele exclui


as PSSessions e libera todos os recursos que elas estavam usando.

Você também pode usar o parâmetro TimeOut do New-PSSession para


fechar uma PSSession ociosa depois de um intervalo especificado.
Para obter mais informações, consulte "New-PSSession".

Se você não excluir a PSSession ou definir um tempo limite,


a PSSession permanecerá aberta e disponível para uso até que você
a feche, feche a sessão na qual ela foi criada ou encerre o Windows
PowerShell. Porém, uma PSSession em um computador remoto será
desconectada se o computador remoto não responder em quatro
minutos. (O computador remoto é configurado para enviar um pulso
de pulsação a cada três minutos.)

Se você salvar um objeto PSSession em uma variável e excluir


a PSSession ou deixá-la exceder o tempo limite, a variável ainda
conterá o objeto PSSession, mas a PSSession não será ativada
e não poderá ser usada nem reparada.

TODAS AS SESSÕES E PSSESSIONS SÃO SEMELHANTES?


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

CONSULTE TAMBÉM
about_Jobs
about_PSSessions
about_Remote
about_Remote_Requirements
Invoke-Command
New-PSSession
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession