Condividi tramite


Spazi dei nomi WMI di Configuration Manager e classi per i report di Configuration Manager

 

Si applica a: System Center 2012 Configuration Manager, System Center 2012 Configuration Manager SP1, System Center 2012 R2 Configuration Manager

Se Configuration Manager è installato, sono presenti vari spazi dei nomi WMI (Windows Management Instrumentation) e, a seconda di questi, centinaia di classi che è possibile creare in ogni spazio dei nomi. Inoltre, ogni sito può disporre di classi non presenti in altri siti in base alle impostazioni specifiche dei siti, all'inventario rilevato e così via.

Spazi dei nomi WMI creati da Configuration Manager

Gli spazi dei nomi WMI seguenti vengono creati da Configuration Manager:

  • 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_<codice sito>

Come recuperare gli spazi dei nomi WMI di Configuration Manager e le classi mediante uno script di Visual Basic

Un modo semplice per elencare le classi correlate a Configuration Manager che sono state create nel sito consiste nell'eseguire uno script di Microsoft Visual Basic. Lo script seguente analizza tutte le classi all'interno di ogni spazio dei nomi WMI sopra elencato e restituisce i risultati in un file di testo.

Per eseguire lo script per analizzare gli spazi dei nomi WMI e le classi

  1. Copiare il codice seguente in Blocco note:

      '======================================================================================= 
      ' 
      ' 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. Creare una cartella denominata C:\WMIScan.

  3. Salvare lo script come WMIScan.vbs nella cartella C:\WMIScan.

  4. Aprire una finestra del prompt dei comandi.

  5. Digitare C:\WMIScan\WMIScan.vbs /sitecode:ABC e quindi premere INVIO. Assicurarsi di sostituire ABC con il codice del sito appropriato.

    Nota

    Nella riga di comando precedente si presuppone che lo script venga eseguito da un server del sito di Configuration Manager. Per connettersi a WMI su un server del sito remoto, usare l'argomento /computer:<computername> per specificare il computer remoto. Ad esempio, per connettersi all'ABC del codice del sito sul Computer1, digitare C:\WMIScan\WMIScan.vbs /sitecode:ABC /computer:Computer1 nella riga di comando.

Lo script crea un file di testo (in C:\WMIScan) con tutte le classi WMI in ogni spazio dei nomi WMI per Configuration Manager quando viene eseguito in un server del sito primario Configuration Manager. Viene anche creato un file di log che elenca tutti gli spazi dei nomi analizzati e indica se l'analisi ha avuto esito positivo. Tenere presente che alcuni spazi dei nomi non saranno presenti in alcuni server del sito, a seconda che siano state configurate le opzioni.