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

Concluído

Uma sessão de CIM (modelo CIM) é um objeto de configuração persistente usado ao criar uma conexão com um computador remoto. A conexão usa o WS-MAN por padrão, mas você pode especificar o protocolo DCOM. Depois que uma sessão for criada, você poderá 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 de 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 referenciá-la 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 de CIM, o PowerShell se conecta com o computador especificado e, quando o cmdlet é concluído, o PowerShell encerra a conexão.

Observação

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

Utilizando sessões

Depois de armazenar a sessão em uma variável, você a referencia 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 foram projetadas para funcionar melhor em um ambiente de domínio, entre computadores no mesmo domínio ou em domínios confiáveis. Se você precisar criar uma sessão para um computador sem domínio ou para um computador em um domínio não confiável, precisará fazer uma configuração adicional. Você aprenderá mais sobre essa configuração no Módulo 8, "Administrando computadores remotos com o Windows PowerShell".

Observação

As informações de ajuda para alguns cmdlets, como Get-SmbShare, indicam suporte ao parâmetro -CimSession. Esses comandos usam CIM internamente. Ao usar esses comandos para consultar um computador remoto, você pode fornecer um objeto de sessão CIM ao 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 que você especifique 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 o 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.

Removendo sessões

Depois de criada, uma sessão permanecerá na memória e estará 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 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