Compartilhar via


Get-PSSession

Obtém as sessões do Windows PowerShell em computadores locais e remotos.

Syntax

Get-PSSession
   [-Name <String[]>]
   [<CommonParameters>]
Get-PSSession
   [-ComputerName] <String[]>
   [-ApplicationName <String>]
   [-ConfigurationName <String>]
   [-Name <String[]>]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ComputerName] <String[]>
   [-ApplicationName <String>]
   [-ConfigurationName <String>]
   -InstanceId <Guid[]>
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ConnectionUri] <Uri[]>
   [-ConfigurationName <String>]
   [-AllowRedirection]
   [-Name <String[]>]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ConnectionUri] <Uri[]>
   [-ConfigurationName <String>]
   [-AllowRedirection]
   -InstanceId <Guid[]>
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-InstanceId <Guid[]>]
   [<CommonParameters>]
Get-PSSession
   [-Id] <Int32[]>
   [<CommonParameters>]

Description

O cmdlet Get-PSSession obtém as sessões do PowerShell (PSSessions) gerenciadas pelo usuário em computadores locais e remotos.

A partir Windows PowerShell 3.0, as sessões são armazenadas nos computadores no final remoto de cada conexão. Você pode usar os parâmetros ComputerName ou ConnectionUri de Get-PSSession para obter as sessões que se conectam ao computador local ou aos computadores remotos, ainda que elas não tenham sido criadas na sessão atual.

Sem parâmetros, Get-PSSession obtém todas as sessões que foram criadas na sessão atual.

Use os parâmetros de filtragem, incluindo Nome, ID, InstanceID, Estado, ApplicationName e ConfigurationName para selecionar entre as sessões retornadas por Get-PSSession .

Use os parâmetros restantes para configurar a conexão temporária na qual o comando Get-PSSession é executado quando você usa os parâmetros ComputerName ou ConnectionUri.

OBSERVAÇÃO: no Windows PowerShell 2.0, sem parâmetros, Get-PSSession obtém todas as sessões que foram criadas na sessão atual. O parâmetro ComputerName obtém sessões que foram criadas na sessão atual e se conectam ao computador especificado.

Para obter mais informações sobre sessões do PowerShell, consulte about_PSSessions.

Exemplos

Exemplo 1: Obter sessões criadas na sessão atual

Get-PSSession

Esse comando obtém todas as PSSessionsions que foram criadas na sessão atual. Ele não obtém PSSessionsions que foram criados em outras sessões ou em outros computadores, mesmo que eles se conectem a este computador.

Exemplo 2: Obter sessões conectadas ao computador local

Get-PSSession -ComputerName "localhost"

Esse comando obtém as PSSessions que estão conectadas ao computador local. Para indicar o computador local, digite o nome do computador, localhost ou um ponto (.)

O comando retorna todas as sessões no computador local, mesmo que elas tenham sido criadas em sessões ou em computadores diferentes.

Exemplo 3: Obter sessões conectadas a um computador

Get-PSSession -ComputerName "Server02"

Id Name            ComputerName    State         ConfigurationName     Availability
 -- ----            ------------    -----         -----------------     ------------
  2 Session3        Server02       Disconnected  ITTasks                       Busy
  1 ScheduledJobs   Server02       Opened        Microsoft.PowerShell     Available
  3 Test            Server02       Disconnected  Microsoft.PowerShell          Busy

Esse comando obtém as PSSessions que estão conectadas ao computador Server02.

O comando retorna todas as sessões em Server02, mesmo que elas tenham sido criadas em sessões ou em computadores diferentes.

A saída mostra que duas das sessões têm o estado de Desconectado e a disponibilidade de Ocupado. Elas foram criadas em sessões diferentes e estão em uso atualmente. A sessão ScheduledJobs, que é Aberta e Disponível, foi criada na sessão atual.

Exemplo 4: Salvar resultados deste comando

New-PSSession -ComputerName Server01, Server02, Server03
$s1, $s2, $s3 = Get-PSSession

Este exemplo mostra como salvar os resultados de um comando Get-PSSession em várias variáveis.

O primeiro comando usa o cmdlet New-PSSession para criar PSSessions em três computadores remotos.

O segundo comando usa um cmdlet Get-PSSession para obter as três PSSessions. Em seguida, ele salva cada uma das PSSessions em uma variável separada.

Quando o PowerShell atribui uma matriz de objetos a uma matriz de variáveis, ele atribui o primeiro objeto à primeira variável, ao segundo objeto à segunda variável e assim por diante. Se houver mais objetos que variáveis, ele atribui todos os objetos restantes à última variável da matriz. Se houver mais variáveis que objetos, as variáveis extra não são usadas.

Exemplo 5: Excluir uma sessão usando uma ID de instância

Get-PSSession | Format-Table -Property ComputerName, InstanceID
$s = Get-PSSession -InstanceID a786be29-a6bb-40da-80fb-782c67f7db0f
Remove-PSSession -Session $s

Este exemplo mostra como obter uma PSSession usando sua ID de instância e, em seguida, excluir a PSSession.

O primeiro comando obtém todas as PSSessionsions que foram criadas na sessão atual. Ele envia as PSSessions para o cmdlet Format-Table, que exibe as propriedades ComputerName e InstanceID de cada PSSession.

O segundo comando usa o cmdlet Get-PSSession para obter uma PSSession específica e salvá-la na variável $s. O comando usa o parâmetro InstanceID para identificar a PSSession.

O terceiro comando usa o cmdlet Remove-PSSession para excluir a PSSession na variável $s.

Exemplo 6: Obter uma sessão que tenha um nome específico

Os comandos neste exemplo encontram uma sessão que tem um formato de nome específico e usa uma configuração de sessão específica e, em seguida, se conecta à sessão. Você pode usar um comando como este para encontrar uma sessão na qual um colega iniciou uma tarefa e se conectar para concluir a tarefa.

Get-PSSession -ComputerName Server02, Server12 -Name BackupJob* -ConfigurationName ITTasks -SessionOption @{OperationTimeout=240000}

Id Name            ComputerName    State         ConfigurationName     Availability
 -- ----            ------------    -----         -----------------     ------------
  3 BackupJob04     Server02        Disconnected        ITTasks                  None

$s = Get-PSSession -ComputerName Server02 -Name BackupJob04 -ConfigurationName ITTasks | Connect-PSSession
$s

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 5 BackupJob04     Server02        Opened        ITTasks                  Available

O primeiro comando obtém sessões nos computadores remotos Server02 e Server12 que têm nomes que começam com BackupJob e usam a configuração da sessão ITTasks. O comando usa o parâmetro Name para especificar o padrão de nome e o parâmetro ConfigurationName para especificar a configuração da sessão. O valor do parâmetro SessionOption é uma tabela de hash que define o valor de OperationTimeout como 240.000 milissegundos (4 minutos). Essa configuração dá ao comando mais tempo para ser concluído. Os parâmetros ConfigurationName e SessionOption são usados para configurar as sessões temporárias nas quais o cmdlet Get-PSSession é executado em cada computador. A saída mostra que o comando retorna a sessão BackupJob04. A sessão está desconectada e a Disponibilidade é Nenhuma, o que indica que ela não está em uso.

O segundo comando usa o cmdlet Get-PSSession para acessar a sessão BackupJob04 e o cmdlet Connect-PSSession para se conectar à sessão. O comando salva a sessão na variável $s.

O terceiro comando obtém a sessão na variável $s. A saída mostra que o comando Connect-PSSession teve êxito. A sessão está no estado Opened e está disponível para uso.

Exemplo 7: Obter uma sessão usando sua ID

Get-PSSession -Id 2

Esse comando obtém a PSSession com a ID 2. Como o valor da propriedade ID é exclusivo apenas na sessão atual, o parâmetro Id é válido apenas para comandos locais.

Parâmetros

-AllowRedirection

Indica que esse cmdlet permite o redirecionamento dessa conexão para um URI (Uniform Resource Identifier) alternativo. Por padrão, o PowerShell não redireciona conexões.

Esse parâmetro configura a conexão temporária criada para executar um comando Get-PSSession com o parâmetro ConnectionUri .

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

Especifica o nome de um aplicativo. Esse cmdlet se conecta apenas a sessões que usam o aplicativo especificado.

Insira o segmento de nome de aplicativo do URI de conexão. Por exemplo, no seguinte URI de conexão, o nome do aplicativo é WSMan: https://localhost:5985/WSMAN. O nome de aplicativo de uma sessão é armazenado na propriedade Runspace.ConnectionInfo.AppName da sessão.

O valor desse parâmetro é usado para selecionar e filtrar sessões. Ele não altera o aplicativo utilizado pela sessão.

Type:String
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

Especifica o mecanismo que é usado para autenticar as credenciais da sessão na qual o comando Get-PSSession é executado.

Este parâmetro configura a conexão temporária que é criada para executar um comando Get-PSSession com o parâmetro ComputerName ou ConnectionUri.

Os valores aceitáveis para esse parâmetro são:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential.

O valor padrão é Default.

Para obter mais informações sobre os valores desse parâmetro, consulte AuthenticationMechanism Enumeration na biblioteca MSDN.

CUIDADO: a autenticação do CredSSP (Provedor de Suporte à Segurança de Credenciais), na qual as credenciais do usuário são passadas para um computador remoto a ser autenticado, foi projetada para comandos que exigem autenticação em mais de um recurso, como acessar um compartilhamento de rede remoto. Esse mecanismo aumenta o risco de segurança da operação remota. Se o computador remoto estiver comprometido, as credenciais que são passadas a ele podem ser usadas para controlar a sessão de rede.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

Especifica o certificado de chave pública digital (X509) de uma conta de usuário que tem permissão para criar a sessão na qual o comando Get-PSSession é executado. Insira a impressão digital do certificado.

Este parâmetro configura a conexão temporária que é criada para executar um comando Get-PSSession com o parâmetro ComputerName ou ConnectionUri.

Os certificados são utilizados na autenticação baseada em certificado do cliente. Eles podem ser mapeados somente para contas de usuário local; eles não funcionam com contas de domínio.

Para obter uma impressão digital do certificado, use um comando Get-Item ou Get-ChildItem na unidade Cert: do PowerShell.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Especifica uma matriz de nomes de computadores. Obtém as sessões que conectam a computadores especificados. Caracteres curinga não são permitidos. Nenhum valor padrão.

A partir do Windows PowerShell 3.0, os objetos PSSession são armazenados nos computadores no final remoto de cada conexão. Para obter as sessões nos computadores especificados, o PowerShell cria uma conexão temporária para cada computador e executa um comando Get-PSSession .

Digite o nome de NetBIOS, um endereço IP ou um nome de domínio totalmente qualificado de um ou mais computadores. Para especificar o computador local, digite o nome do computador, localhost ou um ponto (.).

Observação: esse parâmetro obtém sessões somente de computadores que executam Windows PowerShell 3.0 ou versões posteriores do PowerShell. Versões anteriores não armazenam sessões.

Type:String[]
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

Especifica o nome de uma configuração. Esse cmdlet só chega às sessões que usam a configuração de sessão especificada.

Insira um nome de configuração ou o URI do recurso totalmente qualificado para uma configuração de sessão. Se você especificar apenas o nome da configuração, o seguinte URI de esquema será anexado: https://schemas.microsoft.com/powershell. O nome de configuração de uma sessão é armazenado na propriedade ConfigurationName da sessão.

O valor desse parâmetro é usado para selecionar e filtrar sessões. Ele não altera a configuração de sessão utilizada pela sessão.

Para obter mais informações sobre configurações de sessão, consulte about_Session_Configurations.

Type:String
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ConnectionUri

Especifica um URI que define o ponto de extremidade de conexão para a sessão temporária na qual o comando Get-PSSession é executado. O URI deve ser totalmente qualificado.

Esse parâmetro configura a conexão temporária criada para executar um comando Get-PSSession com o parâmetro ConnectionUri .

O formato dessa cadeia de caracteres é:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

O valor padrão é: https://localhost:5985/WSMAN.

Se você não especificar um ConnectionUri, poderá usar os parâmetros UseSSL, ComputerName, Port e ApplicationName para especificar os valores connectionURI . Os valores válidos para o segmento Transport do URI são HTTP e HTTPS. Se você especificar um URI de conexão com um segmento de Transporte, mas não especificar uma porta, a sessão será criada com portas padrões: 80 para HTTP e 443 para HTTPS. Para usar as portas padrão para comunicação remota do PowerShell, especifique a porta 5985 para HTTP ou 5986 para HTTPS.

Se o computador de destino redirecionar a conexão para um URI diferente, o PowerShell impedirá o redirecionamento, a menos que você use o parâmetro AllowRedirection no comando .

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Esse parâmetro obtém sessões somente de computadores que executam Windows PowerShell 3.0 ou versões posteriores do Windows PowerShell. Versões anteriores não armazenam sessões.

Type:Uri[]
Aliases:URI, CU
Position:0
Default value:Http://localhost:5985/WSMAN
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Especifica uma credencial de usuário. Esse cmdlet executa o comando com as permissões do usuário especificado. Especifique uma conta de usuário que tem permissão para se conectar com o computador remoto e executar um comando Get-PSSession. O padrão é o usuário atual. Digite um nome de usuário, como User01, Domain01\User01ou User@Domain.com, ou insira um objeto PSCredential , como um retornado pelo cmdlet Get-Credential. Quando você digita um nome de usuário, esse cmdlet solicita uma senha.

Este parâmetro é configurado para a conexão temporária que é criada para executar um comando Get-PSSession com o parâmetro ComputerName ou ConnectionUri.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Especifica uma matriz de IDs de sessão. Esse cmdlet obtém apenas as sessões com as IDs especificadas. Digite uma ou mais IDs, separadas por vírgulas ou use o operador de intervalo (..) para especificar um intervalo de IDs. Não é possível usar o parâmetro ID junto com o parâmetro ComputerName .

Uma ID é um inteiro que identifica exclusivamente as sessões gerenciadas pelo usuário na sessão atual. É mais fácil lembrar e digitar do que o InstanceId, mas é exclusivo somente dentro da sessão atual. A ID de uma sessão é armazenada na propriedade ID da sessão.

Type:Int32[]
Position:0
Default value:All sessions
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Especifica uma matriz de IDs de instância de sessões. Esse cmdlet obtém apenas as sessões com as IDs de instância especificadas.

A ID de instância é um GUID que identifica exclusivamente uma sessão em um computador local ou remoto. A InstanceID é exclusiva, mesmo quando você tem várias sessões em execução no PowerShell.

A ID de instância de uma sessão é armazenada na propriedade InstanceID da sessão.

Type:Guid[]
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Especifica uma matriz de nomes de sessão. Esse cmdlet obtém apenas as sessões que têm os nomes amigáveis especificados. Caracteres curinga são permitidos.

O nome amigável de uma sessão é armazenado na propriedade Name da sessão.

Type:String[]
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-Port

Especifica a porta de rede especificada que é usada na conexão temporária na qual o comando Get-PSSession é executado. Para se conectar a um computador remoto, este deve estar escutando na porta usada pela conexão. As portas padrão são 5985, que é a porta WinRM para HTTP e 5986, que é a porta WinRM para HTTPS.

Antes de usar uma porta alternativa, você deve configurar o ouvinte de WinRM no computador remoto para escutar na porta. Para configurar o ouvinte, digite os dois comandos a seguir no prompt do PowerShell:

Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse

New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

Este parâmetro é configurado para a conexão temporária que é criada para executar um comando Get-PSSession com o parâmetro ComputerName ou ConnectionUri.

Não use o parâmetro Port a menos que seja necessário. O conjunto porta no comando aplica-se a todos os computadores ou sessões nos quais o comando é executado. Uma configuração de porta alternativa pode impedir que o comando seja executado em todos os computadores.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:Int32
Position:Named
Default value:5985, 5986
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SessionOption

Especifica opções avançadas para a sessão. Insira um objeto SessionOption , como um que você cria usando o cmdlet New-PSSessionOption ou uma tabela de hash na qual as chaves são nomes de opção de sessão e os valores são valores de opção de sessão.

Os valores padrão das opções são determinados pelo valor da variável de preferência $PSSessionOption, se definida. Caso contrário, os valores padrão são estabelecidos por opções definidas na configuração da sessão.

Os valores de opção da sessão têm precedência sobre os valores padrão de sessões definidos na variável de preferência $PSSessionOption e na configuração da sessão. No entanto, eles não têm precedência sobre valores máximos, cotas ou limites definidos na configuração da sessão.

Para obter uma descrição das opções de sessão, incluindo os valores padrão, consulte New-PSSessionOption. Para obter informações sobre a $PSSessionOption variável de preferência, consulte about_Preference_Variables. Para obter mais informações sobre configurações de sessão, consulte about_Session_Configurations.

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-State

Especifica um estado de sessão. Esse cmdlet obtém apenas sessões no estado especificado. Os valores aceitáveis para esse parâmetro são: All, Opened, Disconnected, Closed e Broken. O valor padrão é All.

O valor de estado de sessão é relativo à sessão atual. Sessões que não tiverem sido criadas nas sessões atuais e não estiverem conectadas à sessão atual terão um estado de Disconnected, mesmo quando estiverem conectadas a uma sessão diferente.

O estado de uma sessão é armazenado na propriedade State da sessão.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:SessionFilterState
Accepted values:All, Opened, Disconnected, Closed, Broken
Position:Named
Default value:All
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThrottleLimit

Especifica o número máximo de conexões simultâneas que podem ser estabelecidas para executar o comando Get-PSSession. Se você omitir esse parâmetro ou digitar o valor 0 (zero), o valor padrão, 32, será usado. O limite de aceleração aplica-se somente ao comando atual e não à sessão ou ao computador.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:Int32
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSSL

Indica que esse cmdlet usa o protocolo SSL (Secure Sockets Layer) para estabelecer a conexão na qual o comando Get-PSSession é executado. Por padrão, SSL não é usado. Se você usar esse parâmetro e o SSL não estiver disponível na porta usada para o comando, o comando falhará.

Este parâmetro configura a conexão temporária que é criada para executar um comando Get-PSSession com o parâmetro ComputerName.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

None

Não é possível redirecionar a entrada para este cmdlet.

Saídas

PSSession

Observações

  • Esse cmdlet obtém objetos PSSession de sessões gerenciadas pelo usuário, como aqueles criados usando os cmdlets New-PSSession, Enter-PSSession e Invoke-Command. Ele não obtém a sessão gerenciada pelo sistema que é criada quando você inicia o PowerShell.
  • A partir do Windows PowerShell 3.0, os objetos PSSession são armazenados no computador que está no lado do servidor ou recebendo o fim de uma conexão. Para obter as sessões armazenadas no computador local ou em um computador remoto, o PowerShell estabelece uma sessão temporária para o computador especificado e executa comandos de consulta na sessão.
  • Para obter sessões que se conectam a um computador remoto, use os parâmetros ComputerName ou ConnectionUri para especificar o computador remoto. Para filtrar as sessões obtidas por Get-PSSession, use os parâmetros Name, ID, InstanceID e State. Use os parâmetros restantes para configurar a sessão temporária utilizada por Get-PSSession.
  • Quando você usa os parâmetros ComputerName ou ConnectionUri, Get-PSSession obtém apenas sessões de computadores que executam Windows PowerShell 3.0 e versões posteriores do PowerShell.
  • O valor da propriedade State de uma PSSession é relativo à sessão atual. Portanto, um valor desconectado significa que a PSSession não está conectada à sessão atual. No entanto, isso não significa que a PSSession esteja desconectada de todas as sessões. Ela pode ser conectada a uma sessão diferente. Para determinar se você pode se conectar ou reconectar à PSSession da sessão atual, use a propriedade Availability .

Um valor Availability de None indica que é possível conectar-se à sessão. Um valor de Ocupado indica que você não pode se conectar à PSSession porque ela está conectada a outra sessão.

Para obter mais informações sobre os valores da propriedade State das sessões, consulte Enumeração RunspaceState.

Para obter mais informações sobre os valores da propriedade Disponibilidade das sessões, consulte Enumeração RunspaceAvailability.