Configuration Manager clases y espacios de nombres WMI para informes de Configuration Manager
Cuando se instala Configuration Manager, se crean varios espacios de nombres de Instrumental de administración de Windows (WMI) y, en función del espacio de nombres, se pueden crear cientos de clases en cada espacio de nombres. Además, cada sitio puede tener clases que otros sitios podrían no tener en función de la configuración específica del sitio, el inventario al que se realiza el seguimiento, etc.
Espacios de nombres WMI creados por Configuration Manager
Los siguientes espacios de nombres WMI se crean mediante 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_<site code>
Cómo recuperar Configuration Manager clases y espacios de nombres WMI mediante un script de Visual Basic
Una manera fácil de enumerar las clases relacionadas Configuration Manager que se han creado en el sitio es ejecutar un script de Visual Basic Microsoft. El siguiente script examinará todas las clases de cada uno de los espacios de nombres WMI enumerados anteriormente y generará los resultados en un archivo de texto.
Para ejecutar el script para examinar los espacios de nombres y las clases wmi
Copie el código siguiente en el Bloc de notas:
'======================================================================================= ' ' NAME: WMIScan.vbs ' ' AUTHOR: 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
Cree una carpeta denominada C:\WMIScan.
Guarde el script como WMIScan.vbs en la carpeta C:\WMIScan.
Abra una ventana del símbolo del sistema.
Escriba C:\WMIScan\WMIScan.vbs /sitecode:ABC y presione Entrar. Asegúrese de reemplazar ABC por el código de sitio adecuado.
Nota:
En la línea de comandos anterior se supone que el script se ejecuta desde un servidor de sitio Configuration Manager. Para conectarse a WMI en un servidor de sitio remoto, use el argumento /computer:<computername> para especificar el equipo remoto. Por ejemplo, para conectarse al código de sitio ABC en Computer1, escriba C:\WMIScan\WMIScan.vbs /sitecode:ABC /computer:Computer1 en la línea de comandos.
El script crea un archivo de texto (en C:\WMIScan) con todas las clases WMI de cada uno de los espacios de nombres WMI para Configuration Manager cuando se ejecuta en un servidor de sitio principal de Configuration Manager. También se crea un archivo de registro que enumera todos los espacios de nombres examinados y si el examen se realizó correctamente. Tenga en cuenta que algunos espacios de nombres no estarán presentes en algunos servidores de sitio, en función de las opciones que se hayan configurado.
Vea también
Referencia del esquema WMI del proveedor de SMS en Configuration Manager