Partilhar via


about_PSSessions

Breve descrição

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

Descrição longa

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

Quando cria uma PSSession, o PowerShell estabelece uma ligação persistente ao computador remoto. Utilize uma PSSession para executar uma série de comandos relacionados num computador remoto. Os comandos que são executados na mesma PSSession podem partilhar dados, como os valores de variáveis, aliases e funções.

Também pode criar uma PSSession no computador local e executar comandos no mesmo. Uma PSSession local utiliza a infraestrutura remota do PowerShell para criar e manter a PSSession.

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

Este tópico explica como criar, utilizar, obter e eliminar PSSessions. Para obter informações mais avançadas, veja about_PSSession_Details.

Nota: as PSSessions utilizam a infraestrutura remota do PowerShell. Para utilizar PSSessions, os computadores locais e remotos têm de ser configurados para comunicação remota. Para obter mais informações, veja about_Remote_Requirements.

No Windows Vista e versões posteriores do Windows, para criar uma PSSession num computador local, tem de 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.

Sempre que iniciar o PowerShell, é criada uma sessão automaticamente e pode executar comandos na sessão. 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. Estes itens só existem 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 PowerShell" ou "PSSessions", no computador local ou num computador remoto. Tal como na sessão predefinida, pode executar comandos numa PSSession e adicionar e criar itens. No entanto, ao contrário da sessão iniciada automaticamente, pode controlar as PSSessions que criar. Pode obter, criar, configurar e removê-los, desligar e voltar a ligar aos mesmos e executar vários comandos na mesma PSSession. A PSSession permanece disponível até que a elimine ou exceda o tempo limite.

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

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

No 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 PSSession.

Porquê Utilizar uma PSSession?

Utilize uma PSSession quando precisar de uma ligação persistente a um computador remoto. Com uma PSSession, 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 alias.

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

Quando utiliza o parâmetro ComputerName de Invoke-Command ou Enter-PSSession, o PowerShell estabelece uma ligação temporária ao computador remoto e, em seguida, fecha a ligação assim que o comando estiver concluído. Todos os elementos de dados que criar serão perdidos quando a ligação for fechada.

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

Como Create uma PSSession

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

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

New-PSSession -ComputerName Server01

Quando submete o comando, New-PSSession cria a PSSession e devolve um objeto que representa a PSSession. Pode guardar o objeto numa variável quando criar a PSSession ou pode utilizar um Get-PSSession comando para obter a PSSession mais tarde.

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

$ps = New-PSSession -ComputerName Server01

Como Create PSSessions em Vários Computadores

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

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

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 na sua sessão atual, utilize o Get-PSSession cmdlet sem o parâmetro ComputerName . Get-PSSession devolve o mesmo tipo de objeto que New-PSSession devolve.

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

Get-PSSession

A apresentação predefinida das PSSessions mostra o respetivo ID e um nome a apresentar predefinido. Pode atribuir um nome a apresentar 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 guardar as PSSessions numa variável. O comando seguinte obtém as PSSessions e guarda-as na variável $ps 123.

$ps123 = Get-PSSession

Ao utilizar os cmdlets PSSession, pode fazer referência a uma PSSession pelo respetivo ID, pelo respetivo nome ou pelo respetivo ID de instância (um GUID). O comando seguinte obtém uma PSSession pelo respetivo ID e guarda-a 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 criou em computadores remotos específicos, utilize o parâmetro ComputerName do Get-PSSession cmdlet . O comando seguinte obtém as PSSessions que criou no computador remoto Server01. Isto inclui PSSessions criadas na sessão atual e noutras sessões no computador local ou noutros computadores.

Get-PSSession -ComputerName Server01

No Windows PowerShell 2.0, Get-PSSession obtém apenas as PSSessions que foram criadas na sessão atual. Não obtém PSSessions que foram criadas noutras sessões ou noutros 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 numa ou mais PSSessions, utilize o Invoke-Command cmdlet . Utilize o parâmetro Sessão para especificar as 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 PSSessions guardadas na variável $ps 123, escreva:

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

Como Eliminar PSSessions

Quando terminar de utilizar a PSSession, utilize o Remove-PSSession cmdlet para eliminar a PSSession e libertar os recursos que estava a utilizar.

Remove-PSSession -Session $ps

ou

Remove-PSSession -Id 1

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

Remove-PSSession -ComputerName Server01 -Id 1

Se não eliminar a PSSession, a PSSession permanecerá disponível para utilização até atingir o limite de tempo.

Também pode utilizar o parâmetro IdleTimeout do New-PSSessionOption cmdlet para definir um tempo de expiração para uma PSSession inativa. Para obter mais informações, veja New-PSSessionOption.

Os Cmdlets PSSession

Para obter uma lista de cmdlets PSSession, escreva:

Get-Help *-PSSession
  • Connect-PSSession: liga uma PSSession à sessão atual
  • Disconnect-PSSession: Desliga uma PSSession da sessão atual
  • Enter-PSSession: inicia uma sessão interativa
  • Exit-PSSession: Termina uma sessão interativa
  • Get-PSSession: Obtém as PSSessions na sessão atual
  • New-PSSession: cria uma nova PSSession num computador local ou remoto
  • Receive-PSSession: obtém os resultados dos comandos executados numa sessão desligada
  • Remove-PSSession: elimina as PSSessions na sessão atual

Nota

As sessões desligadas 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 desligadas, consulte about_Remote_Disconnected_Session

Para Mais Informações

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

Ver também