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