Listar namespaces e classes de repositório local usando CIM e WMI

Concluído

Os namespaces organizam as classes de objeto que você pode consultar com o Common Information Model (CIM) e o WMI (Instrumentação de Gerenciamento do Windows). Você pode listar namespaces para identificar classes de objeto potencialmente úteis.

Você pode usar o cmdlet Get-WmiObject para listar todos os namespaces no computador local ou remoto. Para listar os namespaces no computador local, execute o seguinte comando:

Get-WmiObject -Namespace root -List -Recurse | Select -Unique __NAMESPACE

Nota

Se você receber erros ao executar o comando anterior, verifique se está usando um prompt do Windows PowerShell com privilégios elevados. Alguns namespaces têm requisitos de segurança que permitem que apenas administradores os acessem.

Você pode usar o cmdlet Get-CimInstance para listar os namespaces dentro de um namespace específico, mas ele não fornece um parâmetro -Recurse para listar todos os namespaces disponíveis em um único comando. No entanto, os cmdlets do CIM oferecem suporte à conclusão de guias para o parâmetro -Namespace, semelhante a como você pode usar a conclusão de guias ao inserir um caminho do sistema de arquivos. Usar o preenchimento de guias para o namespace é um método de navegação que você pode usar para explorar os namespaces disponíveis.

Neste módulo, você usará principalmente o namespace root\CIMv2 , que inclui todas as classes relacionadas ao sistema operacional Windows e ao hardware do seu computador. root\CIMv2 é o namespace padrão. Portanto, você não precisa especificar o namespace ao consultar instâncias dele, a menos que indicado de outra forma.

Classes de listagem

Na maioria das vezes, quando você usa o Modelo Comum de Informações (CIM) e a Instrumentação de Gerenciamento do Windows (WMI), está tentando realizar uma tarefa específica. Para identificar como realizar essa tarefa, você normalmente faz uma pesquisa na Internet para identificar se alguém forneceu um código de exemplo que realiza uma tarefa semelhante. Em seguida, você pode modificar esse código para seus fins e identificar as classes CIM ou WMI que eles estão usando. Quando você não encontrar um código de exemplo útil, convém procurar as classes disponíveis para verificar se algo é adequado.

Para explorar as classes disponíveis para você usando CIM e WMI, você pode listar as classes disponíveis em um namespace. Por exemplo, para listar todas as classes no root\CIMv2 namespace, execute um destes comandos:

Get-WmiObject -Namespace root\CIMv2 -List
Get-CimClass -Namespace root\CIMv2

O Windows PowerShell não lista classes em nenhuma ordem específica. Você pode classificar a saída de suas consultas alfabeticamente para encontrar classes mais facilmente. Por exemplo, se você quiser uma classe que represente um processo, mas não saiba o nome da classe, você pode consultar rapidamente a seção "P" de uma lista classificada e começar a procurar o processo de palavras. Para produzir uma lista alfabética de classes no namespace root\CIMv2 , execute um dos seguintes comandos:

Get-WmiObject -Namespace root\cimv2 -List | Sort Name
Get-CimClass -Namespace root\CIMv2 | Sort CimClassName

Nota

No namespace root\CIMv2, você notará alguns nomes de classe que começam com Win32_ e outros que começam com CIM_. Esse namespace é o único que usa esses prefixos. As classes que começam com CIM_ são tipicamente classes abstratas. As classes que começam com Win32_ geralmente são versões mais específicas das classes abstratas e contêm informações específicas do sistema operacional Windows.

Muitos administradores sentem que o repositório é difícil de trabalhar. Encontrar a classe que você precisa para executar uma determinada tarefa é um jogo de adivinhação. Você tem que adivinhar qual a classe pode ser nomeada e, em seguida, revisar a lista de classes para descobrir se você está correto. Em seguida, você deve consultar a classe para determinar se ela contém as informações de que você precisa. Como muitas classes fora do namespace root\CIMv2 não estão bem documentadas, essa é a melhor abordagem.

Não existe um diretório central de classes de repositório. O repositório não inclui um sistema de pesquisa. Você pode usar o Windows PowerShell para executar uma pesquisa básica de palavras-chave de nomes de classe de repositório. Por exemplo, para localizar todas as classes no namespace com rede no root\CIMv2 nome da classe, use o seguinte comando:

Get-CimClass *network* | Sort CimClassName

No entanto, essa técnica não fornece a capacidade de pesquisar descrições de classe porque essas informações não são armazenadas no repositório. Um motor de pesquisa na Internet constitui uma alternativa mais viável à pesquisa de possíveis nomes de classes.

Nota

Você pode notar alguns nomes de classe que começam com dois sublinhados (__). Estas são classes de sistema que WMI e CIM usam internamente.

Nota

Existem várias ferramentas gráficas gratuitas que você pode usar para navegar nas classes WMI e CIM. Para encontrar essas ferramentas, use um mecanismo de pesquisa para procurar o explorador WMI ou o explorador CIM.

Há um objeto de classe WMI específico que pode causar problemas para os administradores de sistema. Esta é a classe Win32_Product . Você pode usar essa classe para consultar o software instalado, mas esteja ciente de que retornar os resultados leva muito tempo e tem implicações negativas de desempenho. Quando você consulta essa classe, o provedor executa uma reconfiguração do Windows Installer (MSI) em cada pacote MSI no sistema enquanto a consulta está sendo executada. A Microsoft recomenda usar a classe Win32reg_AddRemovePrograms como alternativa, mas essa classe só está disponível em sistemas com o cliente Microsoft Endpoint Configuration Manager instalado.

Leitura adicional: Você pode encontrar a página de suporte da Microsoft para esse problema de reconfiguração MSI em Mensagem de log de eventos indica que o Windows Installer reconfigurou todos os aplicativos instalados.