Partilhar via


Sobre as sesões de PSSessions

Descrição Breve

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

Descrição longa

Para executar os comandos Do Windows PowerShell num computador remoto, pode utilizar o parâmetro ComputerName de um cmdlet, ou pode criar uma sessão De Capacidade de Energia do Windows (PSSession) e executar comandos na PSSession.

Quando crias uma sessão de PSSssion, o Windows PowerShell estabelece uma ligação persistente ao computador remoto. Utilize uma pssessão para executar uma série de comandos relacionados num computador remoto. Os comandos que funcionam na mesma PSSession podem partilhar dados, como os valores de variáveis, pseudónimos e funções.

Também pode criar uma pssessão no computador local e executar comandos nele. Uma pssession local utiliza a infraestrutura de remoing Windows PowerShell para criar e manter a pssessão.

A partir do Windows PowerShell 3.0, as pssessions são independentes das sessões em que são criadas. As sesões de PS ativas são mantidas no computador remoto (ou no computador na extremidade remota ou "lado do servidor" da ligação). Como resultado, pode desligar-se da PSSession e voltar a ligá-lo mais tarde a partir do mesmo computador ou de um computador diferente.

Este tópico explica como criar, usar, obter e eliminar as sesessão de PS. Para obter informações mais avançadas, consulte about_PSSession_Details.

Nota: As sesessão PS usam a infraestrutura de remoing Do Windows PowerShell. Para utilizar as sesessão PS, os computadores locais e remotos devem ser configurados para a remoting. Para mais informações, consulte about_Remote_Requirements.

No Windows Vista e nas versões posteriores do Windows, para criar uma sessão de PS num computador local, tem de iniciar o Windows PowerShell com a opção "Executar como administrador".

O que é uma sessão?

Uma sessão é um ambiente em que o Windows PowerShell funciona.

Cada vez que inicia o Windows PowerShell, é criada uma sessão para si e pode executar comandos na sessão. Também pode adicionar itens à sua sessão, tais como módulos e snap-ins, e pode criar itens, tais como variáveis, funções e pseudónimos. Estes itens existem apenas na sessão e são eliminados quando a sessão termina.

Também pode criar sessões geridas pelo utilizador, conhecidas como " sessões Do Windows PowerShell" ou "PSSessions", no computador local ou num computador remoto. Tal como na sessão predefinida, podes executar comandos numa PSSession e adicionar e criar itens. No entanto, ao contrário da sessão que começa automaticamente, podes controlar as sessões de PSS que crias. Podes obter, criar, configurar e removê-los, desconectar e reconectar-te com eles, e executar vários comandos na mesma PSSession. A pssession continua disponível até que o apagues ou o tempo desa hora.

Normalmente, cria-se uma PSSessão para executar uma série de comandos relacionados num computador remoto. Quando cria uma sessão de PSS num computador remoto, o Windows PowerShell estabelece uma ligação persistente ao computador remoto para suportar a sessão.

Se utilizar o parâmetro ComputerName do Invoke-Command ou Enter-PSSession cmdlet para executar um comando remoto ou para 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 completo ou assim que a sessão interativa terminar. Não é possível controlar estas sessões temporárias e não pode usá-las para mais do que um único comando ou uma única sessão interativa.

No Windows PowerShell, a "sessão atual" é a sessão em que está a trabalhar. A "sessão atual" pode referir-se a qualquer sessão, incluindo uma sessão temporária ou uma sessão PSSession.

Porquê usar uma PSSession?

Utilize uma sessão de pssessão quando necessitar de uma ligação persistente a um computador remoto. Com uma pssessão, pode executar uma série de comandos que partilham dados, como o valor das variáveis, o conteúdo de uma função, ou a definição de um pseudónimo.

Pode executar comandos remotos sem criar uma PSSession. Utilize o parâmetro ComputerName de cmdlets ativados remotamente para executar um único comando ou uma série de comandos não relacionados num ou em muitos computadores.

Quando utilizar o parâmetro ComputerName de Invoke-Command Enter-PSSession ou, o Windows PowerShell estabelece uma ligação temporária ao computador remoto e, em seguida, fecha a ligação assim que o comando estiver completo. Os elementos de dados que criar perdem-se quando a ligação está fechada.

Outros cmdlets que têm um parâmetro ComputerName, tais como Get-Eventlog Get-WmiObject e, usam diferentes tecnologias de remoing para recolher dados. Nenhum cria uma ligação persistente como uma PSSession.

Como Criar uma PSSession

Para criar uma pssessão, use o New-PSSession cmdlet. Para criar a sessão PSSession num computador remoto, utilize o parâmetro ComputerName do New-PSSession cmdlet.

Por exemplo, o seguinte comando cria uma nova sessão PSSessão no computador Server01.

New-PSSession -ComputerName Server01

Quando submetes o comando, New-PSSession cria a PSSessão e devolve um objeto que representa a PSSession. Podes guardar o objeto numa variável quando crias a PSSession, ou podes usar um Get-PSSession comando para obter a pssessão numa altura posterior.

Por exemplo, o seguinte comando cria uma nova pssession no computador Server01 e guarda o objeto resultante na variável $ps.

$ps = New-PSSession -ComputerName Server01

Como criar sesessão de PS em vários computadores

Para criar sesessão de PS em vários computadores, utilize o parâmetro ComputerName do New-PSSession cmdlet. Digite os nomes dos computadores remotos numa lista separada por vírgulas.

Por exemplo, para criar sesessão pssessions nos computadores Server01, Server02 e Server03, escreva:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSessioncria uma pssessão em cada um dos computadores remotos.

Como obter pssessions

Para obter as sessões pssessions que foram criadas na sua sessão atual, use o Get-PSSession cmdlet sem o parâmetro ComputerName. Get-PSSessiondevolve o mesmo tipo de objeto que New-PSSession devolve.

O seguinte comando recebe todas as sessões de PSS que foram criadas na sessão atual.

Get-PSSession

A visualização predefinida das sesessão PS mostra o seu ID e um nome de exibição predefinido. Pode atribuir um nome de visualização alternativo quando 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

Também pode salvar as pssessions numa variável. O seguinte comando recebe as sesessão psssions e guarda-as na $ variável PS123.

$ps123 = Get-PSSession

Ao utilizar os cmdlets de pssessão, pode consultar uma pssession pelo seu ID, pelo seu nome, ou pelo seu ID (a GUID). O seguinte comando obtém uma pssessão pelo seu ID e guarda-o na $ variável PS01.

$ps01 = Get-PSSession -Id 1

A partir do Windows PowerShell 3.0, as sesões PS são mantidas no computador remoto. Para obter as sesões PSS que criou em determinados computadores remotos, utilize o parâmetro ComputerName do Get-PSSession cmdlet. O seguinte comando obtém as sesessão PSSessions que criaste no computador remoto Server01. Isto inclui as sessões de PSSso criadas na sessão atual e noutras sessões no computador local ou outros computadores.

Get-PSSession -ComputerName Server01

No Windows PowerShell 2.0, Get-PSSession obtém apenas as sessões pssessions que foram criadas na sessão atual. Não obtém pssessions que foram criadas em outras sessões ou em outros computadores, mesmo que as sessões estejam ligadas e estejam a executar comandos no computador local.

Como executar comandos numa PSSession

Para executar um comando em uma ou mais sesões PSSsions, use o Invoke-Command cmdlet. Utilize o parâmetro Session para especificar as sessões PSSessions e o parâmetro ScriptBlock para especificar o comando.

Por exemplo, para executar um Get-ChildItem comando ("dir") em cada uma das três seessions PSSessions guardadas na variável $ps123, tipo:

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

Como eliminar as pssessions

Quando terminar com a PSSession, use o Remove-PSSession cmdlet para apagar a PSSession e para libertar os recursos que estava a utilizar.

Remove-PSSession -Session $ps

ou

Remove-PSSession -Id 1

Para remover uma sessão de PSSsion de um computador remoto, utilize o parâmetro ComputerName do Remove-PSSession cmdlet.

Remove-PSSession -ComputerName Server01 -Id 1

Se não eliminar a pssessão, a pssession continua disponível para utilização até que se esclareca.

Também pode utilizar o parâmetro IdleTimeout do New-PSSessionOption cmdlet para definir um tempo de validade para uma pssessão ociosa. Para mais informações, consulte a New-PSSessionOption.

Os Cmdlets de PSSession

Para uma lista de cmdlets pssession, escreva:

Get-Help *-PSSession
  • Connect-PSSession: Liga uma pssessão à sessão atual
  • Disconnect-PSSession: Desliga uma psession da sessão atual
  • Enter-PSSession: Inicia uma sessão interativa
  • Saída-PSSessão: Termina uma sessão interativa
  • Get-PSSession: Recebe as psessions na sessão atual
  • Nova sessão PS: Cria uma nova pssessão num computador local ou remoto
  • Receber-PSSession: Obtém os resultados dos comandos que correram numa sessão desconectada
  • Remoção-PSSession: Elimina as sessões de pssessão na sessão em curso

Para Mais Informações

Para obter mais informações sobre as sesessão de PSS, consulte about_PSSession_Details.

Consulte também

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Ligação PSSessão

Desconexão-PSSessão

In-PSSession

Saída-PSSession

Get-PSSession

Invoke-Command

New-PSSession

Remover-PSSession