Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Breve Descrição
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 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 no PSSession.
Quando você cria uma PSSession, o Windows PowerShell estabelece uma conexão persistente com o computador remoto. Use um PSSession para executar uma série de comandos relacionados em um computador remoto. Os comandos executados no mesmo PSSession podem compartilhar dados, como valores de variáveis, aliases e funções.
Você também pode criar uma PSSession no computador local e executar comandos nele. Uma PSSession local usa a infraestrutura 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 nas quais são criadas. PSSessions ativos são mantidos no computador remoto (ou no computador na extremidade remota ou "lado do servidor" da conexão). Como resultado, você pode se desconectar do PSSession e se reconectar a ele posteriormente a partir do mesmo computador ou de um computador diferente.
Este tópico explica como criar, usar, obter e excluir PSSessions. Para obter informações mais avançadas, consulte about_PSSession_Details.
Observação: as PSSessions usam a infraestrutura remota do Windows PowerShell. Para utilizar sessões PS, é necessário que os computadores locais e remotos estejam 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.
Sempre que você inicia o Windows PowerShell, uma sessão é criada para você e você pode executar comandos na sessão. Você também pode adicionar itens à 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 são excluídos quando a sessão termina.
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. Como a 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 inicia automaticamente, você pode controlar as PSSessions que você cria. Você pode obtê-los, criá-los, configurá-los e removê-los, desconectá-los e reconectá-los e executar vários comandos no mesmo PSSession. O PSSession permanece disponível até que você o exclua ou atinja o tempo limite.
Normalmente, 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 Invoke-Command cmdlet or Enter-PSSession para executar um comando remoto ou iniciar uma sessão interativa, o Windows PowerShell criará uma sessão temporária no computador remoto e fechará a sessão assim que o comando for concluído ou assim que a sessão interativa terminar. Você não pode controlar essas sessões temporárias e não pode usá-las para mais de um único comando ou uma única sessão interativa.
No Windows PowerShell, a "sessão atual" é a sessão na qual você está trabalhando. A "sessão atual" pode referir-se a qualquer sessão, incluindo uma sessão temporária ou uma PSSession.
Por que usar um PSSession?
Use uma PSSession quando precisar de uma conexão persistente com um computador remoto. Com um PSSession, você pode executar uma série de comandos que compartilham dados, como o valor de variáveis, o conteúdo de uma função ou a definição de um alias.
Você pode executar comandos remotos sem criar um PSSession. Use o parâmetro ComputerName de cmdlets com suporte para acesso remoto para executar um único comando ou uma série de comandos não relacionados em um ou vários computadores.
Quando você usa o parâmetro ComputerName de 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 é concluído. Todos os elementos de dados criados são perdidos quando a conexão é fechada.
Outros cmdlets com um parâmetro ComputerName, como Get-Eventlog e Get-WmiObject, utilizam diferentes tecnologias de acesso remoto para recolher dados. Nenhum cria uma conexão persistente como um PSSession.
Como criar uma PSSession
Para criar um PSSession, use o cmdlet New-PSSession. Para criar o 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 o PSSession e retorna um objeto que representa o PSSession. Você pode salvar o objeto em uma variável ao criar o PSSession ou pode usar um comando Get-PSSession para obter o 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írgula.
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 criadas na sua sessão atual, utilize o cmdlet Get-PSSession sem o parâmetro ComputerName.
Get-PSSession retorna o mesmo tipo de objeto que New-PSSession retorna.
O comando a seguir obtém todas as PSSessions que foram criadas na sessão atual.
Get-PSSession
A exibição padrão do PSSessions mostra sua ID e um nome de exibição padrã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 as PSSessions em uma variável. O comando a seguir obtém as PSSessions e as salva na variável $ps 123.
$ps123 = Get-PSSession
Ao usar os cmdlets PSSession, você pode se referir a um PSSession por sua ID, por seu nome ou por sua ID de instância (um GUID). O comando a seguir obtém uma PSSession por sua ID e a salva 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 sessões PSS que foram criadas em computadores remotos específicos, use o parâmetro ComputerName do cmdlet Get-PSSession. O comando a seguir obtém as PSSessions que você criou no computador remoto Server01. Isso inclui as PSSessions criadas na sessão atual e em outras sessões no computador local ou em outros computadores.
Get-PSSession -ComputerName Server01
No Windows PowerShell 2.0, Get-PSSession obtém apenas as PSSessions que foram criadas na sessão atual. Ele não obtém PSSessions que foram criados em outras sessões ou em outros computadores, mesmo que as sessões estejam conectadas e estejam 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 o PSSessions e o parâmetro ScriptBlock para especificar o comando.
Por exemplo, para executar um comando Get-ChildItem ("dir") em cada uma das três PSSessions salvas na variável $ps 123, digite:
Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }
Como excluir PSSessions
Quando terminar o PSSession, use o cmdlet Remove-PSSession para excluir o PSSession e liberar os recursos que ele estava usando.
Remove-PSSession -Session $ps
ou
Remove-PSSession -Id 1
Para remover um PSSession de um computador remoto, use o parâmetro ComputerName específico do cmdlet Remove-PSSession.
Remove-PSSession -ComputerName Server01 -Id 1
Se você não excluir o PSSession, o PSSession permanecerá disponível para uso até atingir o tempo limite.
Você também pode usar o parâmetro IdleTimeout do cmdlet New-PSSessionOption para definir um tempo de expiração para uma PSSession ociosa. Para obter mais informações, consulte New-PSSessionOption.
Os Cmdlets do PSSession
Para obter uma lista de cmdlets PSSession, digite:
Get-Help *-PSSession
- Connect-PSSession: Conecta uma PSSession à sessão atual
- Disconnect-PSSession: Desconecta 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 em um computador local ou remoto
- Receive-PSSession: obtém os resultados de comandos executados em uma sessão desconectada
- Remove-PSSession: Exclui as PSSessions na sessão atual
Para mais informações
Para obter mais informações sobre PSSessions, consulte about_PSSession_Details.