TÓPICO
about_PSSessions
DESCRIÇÃO RESUMIDA
Descreve 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
criar uma sessão do Windows PowerShell (PSSession) e executar
comandos na PSSession.
Quando você cria uma PSSession, o Windows PowerShell estabelece
uma conexão persistente com o computador remoto. Use uma
PSSession para executar uma série de comandos relacionados em um
computador remoto. Comandos que são executados na mesma PSSession
podem compartilhar dados, como os valores de variáveis, aliases
e funções.
Você também pode criar uma PSSession no computador local e executar
comandos nela. Uma PSSession local usa a infraestrutura de comunicação
remota do Windows PowerShell para criar e manter a PSSession.
Este tópico explica como criar, usar, obter e excluir PSSessions.
Para obter informações mais detalhadas, consulte "about_PSSession_Details".
Observações: as PSSessions usam a infraestrutura de comunicação
remota do Windows PowerShell. Para usar PSSessions,
os computadores local e remoto devem ser configurados
para comunicação remota. Para obter mais informações,
consulte about_Remote_Requirements.
No Windows Vista e em versões mais recentes do Windows,
para criar uma PSSession em um computador local, você
precisa inicia 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.
Toda vez que você inicia o Windows PowerShell, uma sessão é criada.
Você pode executar comandos nessa sessão. Você também pode
adicionar itens à sua sessão, como módulos e snap-ins, e criar
itens, como variáveis, funções e aliases. Esses itens só existem
na sessão e são excluídos quando a sessão termina.
Você também pode criar sessões adicionais, conhecidas como "sessões
do Windows PowerShell" ou "PSSessions", no computador local ou
em um computador remoto. Como na sessão padrão, é possível executar
comandos em uma PSSession e adicionar e criar itens.
Porém, ao contrário das sessões inicializadas automaticamente,
você pode controlar as PSSessions que você cria. Você pode obter,
criar, configurar e remover as PSSessions, além de executar vários
comandos na mesma PSSession. A PSSession permanece aberta
e disponível até que você a exclua da sessão.
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 oferecer suporte
à sessão.
Se você usar o parâmetro computerName do cmdlet Invoke-Command ou
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 concluir ou
a sessão interativa terminar. Você não pode controlar essas sessões
temporárias nem 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 fazer referência a qualquer
sessão, inclusive a uma sessão temporária ou uma PSSession.
POR QUE USAR UMA PSSESSION?
Use uma PSSession quando precisar de uma conexão persistente com um
computador remoto. Com uma PSSession, é possível 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 uma PSSession. Use
o parâmetro ComputerName de cmdlets habilitados remotamente para
executar um único comando ou uma série de comandos não
relacionados, em um ou mais computadores.
Quando você usa o parâmetro ComputerName de Invoke-Expression ou Enter-
PSSession, o Windows PowerShell estabelece uma conexão temporária com
o computador remoto e fecha a conexão assim que o comando é concluído.
Todos os elemento de dados que você cria são perdidos quando a conexão
é encerrada.
Outros cmdlets que têm um parâmetro ComputerName, como o Get-Eventlog
e o Get-WmiObject, usam tecnologias de comunicação remota diferentes
para coletar dados. Nenhum cria uma conexão persistente como uma
PSSession.
COMO CRIAR UMA PSSESSION
Para criar uma PSSession, use o cmdlet New-PSSession. Para criar
a 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, o New-PSSession cria a PSSession
e retorna um objeto que representa a PSSession. Você pode salvar
o objeto em uma variável quando criar a PSSession ou pode usar um comando
Get-PSSession para obter a 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írgulas.
Por exemplo, para criar PSSessions nos computadores Server01,
Server02 e Server03, digite:
new-PSSession -computername Server01, Server02, Server03
O New-PSSession cria uma PSSession em cada computador remoto.
COMO OBTER PSSESSIONS
Para obter PSSessions que foram criadas na sessão atual, use
o cmdlet Get-PSSession. O Get-PSSession retorna o mesmo tipo de
objeto que o New-PSSession.
O comando a seguir obtém todas as PSSessions criadas na sessão atual.
get-PSSession
A exibição padrão das PSSessions mostra as IDs e os nomes 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 $ps123.
$ps123 = get-PSSession
Ao usar os cmdlets da PSSession, você pode fazer referência a uma
PSSession por ID ou nome, ou pela ID de instância (um GUID).
O comando a seguir obtém uma PSSession por ID e a salva na variável
$ps01.
$ps01 = get-PSSession -id 1
O Get-PSSession só obtém as PSSessions criadas na sessão atual.
Ele não obtém as PSSessions criadas em outras sessões ou em outros
computadores, mesmo se as sessões estiverem conectadas ao computador
local e houver comandos sendo executados.
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 as
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 $ps123, digite:
invoke-command -session $ps123 -scriptblock {get-childitem}
COMO EXCLUIR PSSESSIONS
Quando tiver terminado de usar a PSSession, use o cmdlet Remove-PSSession
para excluir a PSSession e liberar os recursos que ela estava usando.
remove-PSSession -session $ps
- ou -
remove-PSSession -id 1
Se você não excluir a PSSession, a PSSession permanecerá aberta
e disponível para uso até que você feche a sessão atual ou saia do Windows
PowerShell.
Você também pode usar o parâmetro TimeOut de New-PSSession para
definir uma hora de validade para uma PSSession ociosa. Para
obter mais informações, consulte "new-PSSession".
OS CMDLETS DA PSSESSION
Cmdlets Descrição
-------------- ---------------------------------
New-PSSession Cria uma nova PSSession em um
computador local ou remoto.
Get-PSSession Obtém as PSSessions na sessão atual.
Remove-PSSession Exclui as PSSessions da sessão atual.
Enter-PSSession Inicia uma sessão interativa.
Exit-PSSession Termina uma sessão interativa.
Para obter uma lista de cmdlets da PSSession, digite:
get-help *-PSSession
PARA OBTER MAIS INFORMAÇÕES
Para obter informações mais detalhadas sobre as PSSessions, consulte
about_PSSession_Details.
CONSULTE TAMBÉM
about_Remote
about_Remote_Requirements
New-PSSession
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession
Invoke-Command