TÓPICO about_PSSession_Details DESCRIÇÃO RESUMIDA Fornece informações detalhadas sobre as sessões do Windows PowerShell e o papel que elas desempenham em comandos remotos. DESCRIÇÃO LONGA Uma sessão é um ambiente no qual o Windows PowerShell é executado. Uma sessão é criada sempre que você inicia o Windows PowerShell. É possível criar sessões adicionais, chamadas "sessões do Windows PowerShell" ou "PSSessions" em seu computador ou em outro computador. Diferentemente das sessões que o Windows PowerShell cria para você, você controla e gerencia as PSSessions que cria. As PSSessions têm um papel importante na computação remota. Quando você cria uma PSSession conectada a um computador remoto, o Windows PowerShell estabelece uma conexão persistente com o computador remoto para oferecer suporte à PSSession. Você pode usar a PSSession para executar uma série de comandos, funções e scripts que compartilham dados. Este tópico fornece informações detalhadas sobre sessões e PSSessions no Windows PowerShell. Para obter informações básicas sobre as tarefas que você pode executar com as sessões, consulte about_PSSessions. SOBRE SESSÕES Tecnicamente, uma sessão é um ambiente de execução no qual o Windows PowerShell é executado. Cada sessão inclui uma instância do mecanismo de System.Management.Automation e um programa host no qual o Windows PowerShell é executado. O host pode ser o console do Windows PowerShell ou outro programa que execute comandos, como o Cmd.exe, ou um programa criado para ser o host do Windows PowerShell, como o ISE (Ambiente de Script Integrado) do Windows PowerShell. Do ponto de vista do Windows, uma sessão é um processo do Windows no computador de destino. Cada sessão é configurada independentemente. Ela inclui suas próprias propriedades, sua própria diretiva de execução e seus próprios perfis. O ambiente que existe quando a sessão é criada permanece por todo seu tempo de vida, até mesmo se você alterar o ambiente no computador. Todas as sessões são criadas em um escopo global, até mesmo sessões que você cria em um script. Você pode executar apenas um comando (ou pipeline de comando) de cada vez em uma sessão. Uma execução de segunda comando (um de cada vez) espera até quatro minutos para que o primeiro comando seja concluído. Uma segunda execução de comando de forma assíncrona (simultaneamente) falha. SOBRE AS PSSESSIONS Uma sessão é criada toda vez que você inicia o Windows PowerShell. E o Windows PowerShell cria sessões temporárias para executar comandos individuais. Porém, você também pode criar sessões (chamadas "sessões do Windows PowerShell" ou "PSSessions") que você controla e gerencia. As PSSessions são fundamentais aos comandos remotos. Se você usar o parâmetro ComputerName do cmdlet Invoke-Command ou Enter-PSSession, o Windows PowerShell estabelecerá uma sessão temporária para executar o comando e fechará a sessão assim que o comando ou a sessão interativa for concluída. No entanto, se você usar o cmdlet New-PSSession para criar uma PSSession, o Windows PowerShell estabelecerá uma sessão persistente no computador remoto no qual você pode executar vários comandos ou sessões interativas. As PSSessions que você cria permanecem abertas e disponíveis para uso até que você as exclua ou feche a sessão na qual elas foram criadas. Quando você cria uma PSSession em um computador remoto, o sistema cria um processo do PowerShell no computador remoto e estabelece uma conexão entre o computador local e o processo no computador remoto. Quando você cria uma PSSession no computador local, o novo processo e as conexões são criados no computador local. QUANDO EU PRECISO DE UMA PSSESSION? Os cmdlets Invoke-Command e Enter-PSSession têm os parâmetros ComputerName e Session. Você pode usar um ou outro para executar um comando remoto. Use o parâmetro ComputerName para executar um único comando ou uma série de comandos não relacionados, em um ou mais computadores. Para executar comandos que compartilham dados, você precisa de uma conexão persistente com o computador remoto. Nesse caso, crie uma PSSession e use o parâmetro Session para executar comandos na PSSession. Muitos outros cmdlets que obtêm dados de computadores remotos, como Get-Process, Get-Service, Get-EventLog e Get-WmiObject têm só um parâmetro ComputerName. Eles usam tecnologias diferentes da comunicação remota do Windows PowerShell para coletar dados remotamente. Esses cmdlets não têm um parâmetro Session, mas você pode usar o cmdlet Invoke-Command para executar esses comandos em uma PSSession. COMO EU CRIO UMA PSSESSION? Para criar uma PSSession, use o cmdlet New-PSSession. Você pode usar New-PSSession para criar uma PSSession em um computador local ou remoto. EU POSSO CRIAR UMA PSSESSION EM QUALQUER COMPUTADOR? Para criar uma PSSession que esteja conectada a um computador remoto, o computador deve ser configurado para a comunicação remota no Windows PowerShell. O usuário atual deverá ser um membro do grupo Administradores no computador remoto ou deverá ser capaz de fornecer as credenciais de um membro do grupo Administradores. Para obter mais informações, consulte about_Remote_Requirements. EU POSSO CONSULTAR AS PSSESSIONS QUE OUTROS CRIARAM EM MEU COMPUTADOR? Não. Você pode obter e gerenciar apenas as PSSessions que você criou na sessão atual. Você não pode ver as PSSessions que outros criaram, até mesmo se eles executarem comandos no computador local. EU POSSO EXECUTAR UM TRABALHO EM SEGUNDO PLANO EM UMA PSSESSION? Sim. Um trabalho em segundo plano é um comando executado de forma assíncrona "no segundo plano" sem interagir com a sessão atual. Quando você enviar um comando para iniciar um trabalho, o comando retornará um objeto de trabalho, mas o trabalho continuará sendo executado em segundo plano até ser concluído. Para iniciar um trabalho em segundo plano em um computador local, use o comando Start-Job. Você pode executar o trabalho em segundo plano em uma conexão temporária (usando o parâmetro ComputerName) ou em uma PSSession (usando o parâmetro Session). Para iniciar um trabalho em segundo plano em um computador remoto, use o cmdlet Invoke-Command com seu parâmetro AsJob ou use o cmdlet Invoke-Command para executar um comando Start-Job em um computador remoto. Ao usar o parâmetro AsJob, você pode usar o parâmetro ComputerName ou Session. Ao usar Invoke-Command para executar um comando Start-Job, você deverá executar o comando em uma PSSession. Se você usar o parâmetro ComputerName, o Windows PowerShell terminará a conexão quando o objeto de trabalho retornar e o trabalho for interrompido. Para obter mais informações, consulte about_Jobs. EU POSSO EXECUTAR UMA SESSÃO INTERATIVA? Sim. Para iniciar uma sessão interativa com um computador remoto, use o cmdlet Enter-PSSession. Em uma sessão interativa, os comandos que você digita são executados no computador remoto, da mesma forma como se eles tivessem sido digitados diretamente no computador remoto. Você pode executar uma sessão interativa em uma sessão temporária (usando o parâmetro ComputerName) ou em uma PSSession (usando o parâmetro Session). Se você usar uma PSSession, a PSSession reterá os dados de comandos anteriores e todos os dados gerados durante a sessão interativa para uso nos comandos posteriores. Quando você encerra a sessão interativa, a PSSession permanece aberta e disponível para uso. Para obter mais informações, consulte "Enter-PSSession" e "Exit-PSSession". EU DEVO EXCLUIR AS PSSESSIONS? Sim. Uma PSSession é um processo, que é um ambiente autossuficiente que usa memória e outros recursos, até mesmo quando não está sendo usado. Quando você encerra uma PSSession, deverá excluí-la. Se você criar várias PSSessions, feche as que você não estiver usando e mantenha somente as que estiverem em uso. Para excluir PSSessions, use o cmdlet Remove-PSSession. Ele exclui as PSSessions e libera todos os recursos que elas estavam usando. Você também pode usar o parâmetro TimeOut do New-PSSession para fechar uma PSSession ociosa depois de um intervalo especificado. Para obter mais informações, consulte "New-PSSession". Se você não excluir a PSSession ou definir um tempo limite, a PSSession permanecerá aberta e disponível para uso até que você a feche, feche a sessão na qual ela foi criada ou encerre o Windows PowerShell. Porém, uma PSSession em um computador remoto será desconectada se o computador remoto não responder em quatro minutos. (O computador remoto é configurado para enviar um pulso de pulsação a cada três minutos.) Se você salvar um objeto PSSession em uma variável e excluir a PSSession ou deixá-la exceder o tempo limite, a variável ainda conterá o objeto PSSession, mas a PSSession não será ativada e não poderá ser usada nem reparada. TODAS AS SESSÕES E PSSESSIONS SÃO SEMELHANTES? Não. Os desenvolvedores podem criar sessões personalizadas que incluem somente provedores e cmdlets selecionados. Se um comando funcionar em uma sessão, mas não em outra, pode ser porque a sessão é restrita. CONSULTE TAMBÉM about_Jobs about_PSSessions about_Remote about_Remote_Requirements Invoke-Command New-PSSession Get-PSSession Remove-PSSession Enter-PSSession Exit-PSSession