Classes e Espaços de Nomes do Configuration Manager WMI para os Relatórios do Configuration Manager

 

Aplica-se a: System Center 2012 Configuration Manager, System Center 2012 Configuration Manager SP1, System Center 2012 R2 Configuration Manager

Quando o Gestor de configuração é instalado, são criados vários espaços de nomes Windows Management Instrumentation (WMI) e, consoante o espaço de nomes, podem ser criadas centenas de classes para cada um. Além disso, cada site poderá ter classes que outros sites poderão não ter, consoante as definições específicas do site, do inventário que é registado, entre outros.

Os seguintes espaços de nomes WMI são criados pelo Gestor de configuração:

  • root\ccm

    • root\ccm\CCMPasswordSettings

    • root\ccm\CIModels

    • root\ccm\CIStateStore

    • root\ccm\CIStore

    • root\ccm\CITasks

    • root\ccm\ClientSDK

    • root\ccm\ContentTransferManager

    • root\ccm\DataTransferService

    • root\ccm\dcm

    • root\ccm\DCMAgent

    • root\ccm\evaltest

    • root\ccm\Events

    • root\ccm\InvAgt

    • root\ccm\LocationServices

    • root\ccm\Messaging

    • root\ccm\NetworkConfig

    • root\ccm\PeerDPAgent

    • root\ccm\Policy

    • root\ccm\PowerManagementAgent

    • root\ccm\RebootManagement

    • root\ccm\ScanAgent

    • root\ccm\Scheduler

    • root\ccm\SMSNapAgent

    • root\ccm\SoftMgmtAgent

    • root\ccm\SoftwareMeteringAgent

    • root\ccm\SoftwareUpdates

    • root\ccm\StateMsg

    • root\ccm\VulnerabilityAssessment

    • root\ccm\XmlStore

    • root\cimv2\sms

    • root\smsdm

    • root\sms

    • root\sms\site_<código do site>

Uma forma fácil de listar as classes relacionadas com o Gestor de configuração que foram criadas no seu site é executar um script do Microsoft Visual Basic. O script seguinte irá analisar todas as classes em cada espaço de nomes WMI listado acima e exportar os resultados para um ficheiro de texto.

Para executar o script para analisar as classes e os espaços de nomes WMI

  1. Copie o seguinte código para o Bloco de Notas:

    '======================================================================================= 
    ' 
    ' NAME: WMIScan.vbs 
    ' 
    ' AUTHOR: Dougeby , Microsoft Corporation 
    ' DATE  : 10/24/2013 (Revised for System Center 2012 Configuration Manager by Rob Stack) 
    ' 
    ' COMMENT: Script to scan Configuration Manager WMI classes. 
    ' 
    '======================================================================================= 
    
    Dim SearchChar 
    Dim TotChar 
    Dim RightChar 
    Dim ClassName 
    Dim Computer 
    Dim strComputer 
    Dim strUser 
    Dim strPassword 
    Dim strSiteCode 
    Dim strNameSpace 
    Dim strFolder 
    Dim strFile 
    Dim strLogFile 
    Dim strFullFile 
    Dim strFullLogFile 
    Dim isError 
    
    Const ForWriting = 2 
    Const ForAppending = 8 
    Const adOpenStatic = 3 
    Const adLockOptimistic = 3 
    Const adUseClient = 3 
    
    set colNamedArguments=wscript.Arguments.Named 
    If colNamedArguments.Exists("Sitecode") Then 
      strSiteCode = colNamedArguments.Item("Sitecode") 
    Else 
      WScript.Echo "Invalid Command Line Arguments" & vbCrLf & _ 
        vbCrLf & "Usage: WMIScan.vbs /Sitecode:<sitecode> " & _ 
        "/Computer:<computername>" & vbCrLf & vbCrLf & _ 
        "Example1: WMIScan.vbs /Sitecode:PS1" & vbCrLf & _ 
        "Example2: WMIScan.vbs /Sitecode:PS1 /Computer:Computer1" 
      WScript.Quit(1) 
    End If 
    If colNamedArguments.Exists("Computer") Then 
      strComputer = colNamedArguments.Item("Computer") 
    Else strComputer = "." 
    End If 
    
    'Define the values for files and folders. 
    strFolder = "c:\WMIScan" 
    strFile = "WMIScan.txt" 
    strLogFile = "WMIScan.log" 
    strFullFile = strFolder & "\" & strFile 
    strFullLogFile = strFolder & "\" & strLogFile 
    isError = 0 
    
    'List of Configuration Manager namespaces are put into an array. 
    arrNameSpaces = Array("root\ccm","root\ccm\CCMPasswordSettings","root\ccm\CIModels",_
    "root\ccm\CIStateStore","root\ccm\CIStore","root\ccm\CITasks",_
    "root\ccm\ClientSDK","root\ccm\ContentTransferManager","root\ccm\DataTransferService",_
    "root\ccm\dcm","root\ccm\DCMAgent","root\ccm\evaltest",_
    "root\ccm\Events","root\ccm\InvAgt","root\ccm\LocationServices",_
    "root\ccm\Messaging","root\ccm\NetworkConfig","root\ccm\PeerDPAgent",_
    "root\ccm\Policy","root\ccm\PowerManagementAgent","root\ccm\RebootManagement",_
    "root\ccm\ScanAgent","root\ccm\Scheduler","root\ccm\SMSNapAgent",_
    "root\ccm\SoftMgmtAgent","root\ccm\SoftwareMeteringAgent","root\ccm\SoftwareUpdates",_
    "root\ccm\StateMsg","root\ccm\VulnerabilityAssessment","root\ccm\XmlStore",_
    "root\cimv2\sms","root\smsdm","root\sms",_
    "root\sms\site_"& strSiteCode)
    
    'Creates the folder and files for the scan output and log file. 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    
    'Does strFolder Folder exist? If not, it's created. 
    If Not objFSO.FolderExists(strFolder) then 
      Set objFolder = objFSO.CreateFolder(strFolder) 
    End If 
    
    'Creates the WMIScan.txt and WMIScan.log files. 
    Set objFile = objFSO.CreateTextFile(strFullFile) 
    Set objLogFile = objFSO.CreateTextFile(strFullLogFile) 
    objFile.close 
    objLogFile.close 
    
    'Opens the WMIScan.log file in write mode. 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objLogFile = objFSO.OpenTextFile(strFullLogFile, ForWriting) 
    objLogFile.WriteLine "********************************************" 
    objLogFile.WriteLine " WMIScan Tool Executed - " & Now() 
    objLogFile.WriteLine "********************************************" 
    
    'Opens the WMIScan.txt file in write mode. 
    Set objFile = objFSO.OpenTextFile(strFullFile, ForWriting) 
    objLogFile.WriteLine "--------------------------------------------" 
    Computer = strComputer 
    If Computer = "." Then Computer = "Local System" 
    objLogFile.WriteLine " Scanning WMI Namespaces On " & Computer 
    objLogFile.WriteLine "--------------------------------------------" 
    
    WScript.echo "Starting WMI scan on " & Computer 
    
    'Create a collection of Namespaces from the array, and 
    ' call the EnumNameSpaces subroutine to do the scan. 
    For Each strNameSpace In arrNameSpaces 
       Call EnumNameSpaces(strNameSpace, strComputer) 
    Next 
    objLogFile.WriteLine "---------------------------------------------" 
    objLogFile.WriteLine " Done scanning WMI Namespaces on " & Computer 
    objLogFile.WriteLine "---------------------------------------------" 
    
    'Close the WMISscan.txt file. 
    objFile.close 
    
    If isError = 1 Then 
      WScript.Echo "WMI Scan has Completed with Errors!" & vbCrLf & _ 
      "Check the " & strLogFile & " file for more details." & vbCrLf & _ 
      vbCrLf & strFile & " & " & strLogFile & " have been written to "_ 
      & strFolder & "." 
    Else 
      WScript.Echo "WMI Scan has Completed without any Errors!" & _ 
      vbCrLf & vbCrLf & strFile & " & " & strLogFile & _ 
      " have been written to " & strFolder & "." 
    End If   
    
    '*************************************************************** 
    '***   Subroutine to do the classes scan on the namespace.   *** 
    '*************************************************************** 
    Sub EnumNameSpaces(strNameSpace, strComputer) 
      Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
      On Error Resume next 
      Set objSWbemServices= objSWbemLocator.ConnectServer (strComputer,_ 
        strNameSpace) 
      objLogFile.Write "Connecting to the \\" & strComputer & "\" &_ 
        strNameSpace & " WMI NameSpace...." 
      If Err.number = 0 Then  
        objLogFile.WriteLine "Success!!" 
        objLogFile.Write "  Scanning for Classes in "&strNameSpace _ 
          & "..." 
    
        'Create a collection of all the subclasses of the namespace. 
        Set colClasses = objSWbemServices.SubclassesOf() 
    
        'Scan all WMI classes, and write them to the scan1.txt file. 
        objFile.WriteBlanklines(1) 
        objFile.WriteLine "\\" & strComputer & "\" & strNameSpace 
    
        For Each objClass In colClasses 
          SearchChar = instr(objClass.Path_.Path, ":") 
          TotChar = len(objClass.Path_.Path) 
          RightChar = TotChar - SearchChar 
          ClassName = right(objClass.Path_.Path,RightChar) 
          objFile.WriteLine "   " & ClassName 
        Next 
        objLogFile.WriteLine "Success!!" 
      ElseIf Err.Number = -2147024891 Then 
        objLogFile.WriteLine "Error " & Err.Number & _ 
          "! Connection to "& strComputer & " Failed!" 
        isError = 1 
      Elseif Err.Number = -2147217394 Then 
        objLogFile.WriteLine "Error " & Err.Number & "!! Namespace "&_ 
          strNameSpace & " NOT Found!!" 
        isError = 1   
      Else 
        objLogFile.WriteLine "Error " & Err.Number & "!!" 
      isError = 1 
      End If 
    
    End Sub
    
  2. Crie uma pasta denominada C:\WMIScan.

  3. Guarde o script como WMIScan.vbs na pasta C:\WMIScan.

  4. Abra uma janela de Linha de Comandos.

  5. Escreva C:\WMIScan\WMIScan.vbs /sitecode:ABC e prima Enter. Certifique-se de que substitui ABC pelo código do site adequado.

    System_CAPS_noteNota

    A linha de comando acima assume que o script é executado a partir de um servidor do site do Gestor de configuração. Para ligar ao WMI num servidor do site remoto, utilize o argumento /computer:<computername> para especificar o computador remoto. Por exemplo, para ligar ao código do site ABC no Computador1, escreveria C:\WMIScan\WMIScan.vbs /sitecode:ABC /computer:Computer1 na linha de comandos.

O script cria um ficheiro de texto (na pasta C:\WMIScan) com todas as classes WMI em cada espaço de nomes WMI para o Gestor de configuração quando executado num servidor do site primário do Gestor de configuração. É também criado um ficheiro de registo com todos os espaços de nomes analisados e que indica se a análise foi efetuada com êxito. Tenha em atenção que alguns espaços de nomes não estarão presentes em alguns servidores do site, dependendo das opções que foram configuradas.

Mostrar: