Consultar classes de repositório de computadores remotos usando objetos CIMSession

Concluído

Uma sessão CIM (Common Information Model) é um objeto de configuração persistente usado ao criar uma conexão com um computador remoto. A conexão usa WS-MAN por padrão, mas você pode especificar o protocolo DCOM. Depois que uma sessão é criada, você pode usá-la para processar várias consultas para esse computador. Isso simplifica a conectividade porque todas as opções de configuração estão contidas na sessão. Uma sessão CIM também permite especificar opções de conectividade que não estão disponíveis para uma conexão ad hoc.

Criando objetos de sessão

Ao criar uma sessão, você deve armazená-la em uma variável para fazer referência a ela posteriormente. A sintaxe básica para criar uma sessão e armazená-la em uma variável é:

$s = New-CimSession -ComputerName LON-DC1

Você pode criar várias sessões ao mesmo tempo:

$sessions = New-CimSession -ComputerName LON-CL1,LON-DC1

Quando você cria uma sessão, o PowerShell não estabelece a conexão imediatamente. Quando um cmdlet usa a sessão CIM, o PowerShell se conecta ao computador especificado e, quando o cmdlet é concluído, o PowerShell encerra a conexão.

Nota

Em alguns casos, pode ser benéfico usar a comunicação remota do PowerShell em vez de sessões CIM para conectividade remota. A comunicação remota do PowerShell abre uma conexão com o computador remoto e a mantém aberta até ser fechada explicitamente. Se você estiver executando várias consultas em um computador, isso poderá melhorar o desempenho.

Usando sessões

Depois de armazenar a sessão em uma variável, faça referência a ela com cmdlets CIM usando o parâmetro -CimSession . O exemplo a seguir usa uma variável que contém várias sessões:

Get-CimInstance -CimSession $sessions -ClassName Win32_OperatingSystem

Lembre-se de que as sessões são projetadas para funcionar melhor em um ambiente de domínio, entre computadores no mesmo domínio ou em domínios confiáveis. Se tiver de criar uma sessão para um computador que não seja de domínio ou para um computador num domínio não fidedigno, terá de efetuar uma configuração adicional. Você aprenderá mais sobre essa configuração no Módulo 8, "Administrando computadores remotos com o Windows PowerShell".

Nota

As informações de ajuda para alguns cmdlets, como Get-SmbShare , afirmam que eles oferecem suporte a um parâmetro -CimSession . Esses comandos usam o CIM internamente. Ao usar esses comandos para consultar um computador remoto, você pode fornecer um objeto de sessão CIM para o parâmetro -CimSession para se conectar usando uma sessão existente.

Configurando opções de sessão

Um objeto de opção de sessão permite especificar muitas configurações para uma sessão. Ao criar uma nova sessão, você especifica o objeto de opção de sessão para configurar a sessão. O exemplo a seguir cria uma sessão usando DCOM em vez de WS-MAN:

$opt = New-CimSessionOption -Protocol Dcom
$DcomSession = New-CimSession -ComputerName LON-DC1 -SessionOption $opt
Get-CimInstance -ClassName Win32_BIOS -CimSession $DcomSession

A primeira linha no código anterior cria um objeto de opção de sessão que especifica que o protocolo DCOM deve ser usado para conectividade. A segunda linha cria uma nova sessão usando esse objeto de opção de sessão e a armazena em uma variável. A linha final usa a sessão para consultar o computador remoto definido na sessão e retornar as informações solicitadas.

Remoção de sessões

Depois de criar uma sessão, ela permanece na memória e disponível para uso até que a instância do PowerShell seja fechada. Você pode remover sessões manualmente usando o cmdlet Remove-CimSession . O exemplo a seguir remove uma ou mais sessões contidas em uma variável:

$sessions | Remove-CimSession

Para remover as sessões de um computador remoto específico, você pode consultar as sessões desse computador e, em seguida, removê-las, como mostra o exemplo a seguir:

Get-CimSession -ComputerName LON-DC1 | Remove-CimSession

Para remover todas as sessões, execute o seguinte comando:

Get-CimSession | Remove-CimSession