Configuration Manager namespaces e classes WMI para relatórios de Configuration Manager
Quando Configuration Manager é instalado, há vários namespaces WMI (Instrumentação de Gerenciamento do Windows) criados e, dependendo do namespace, centenas de classes podem ser criadas em cada namespace. Além disso, cada site pode ter classes que outros sites podem não ter dependendo das configurações específicas do site, do inventário que é rastreado e assim por diante.
Namespaces WMI criados por Configuration Manager
Os seguintes namespaces WMI são criados por 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
- código root\sms\site_<site>
Como recuperar Configuration Manager namespaces e classes WMI usando um script do Visual Basic
Uma maneira fácil de listar as classes relacionadas Configuration Manager que foram criadas em seu site é executar um script Microsoft Visual Basic. O script a seguir examinará todas as classes dentro de cada um dos namespaces WMI listados acima e produzirá os resultados para um arquivo de texto.
Para executar o script para examinar os namespaces e classes WMI
Copie o seguinte código no Bloco 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
Crie uma pasta chamada C:\WMIScan.
Salve o script como WMIScan.vbs na pasta C:\WMIScan.
Abra uma janela de Prompt de Comando.
Digite C:\WMIScan\WMIScan.vbs /sitecode:ABC e pressione Enter. Certifique-se de substituir o ABC pelo código de site apropriado.
Observação
A linha de comando acima pressupõe que o script seja executado de um servidor de site Configuration Manager. Para se conectar ao WMI em um servidor de site remoto, use o argumento /computer:<computername> para especificar o computador remoto. Por exemplo, para se conectar ao código do site ABC no Computer1, você digitaria C:\WMIScan\WMIScan.vbs /sitecode:ABC /computer:Computer1 na linha de comando.
O script cria um arquivo de texto (em C:\WMIScan) com todas as classes WMI em cada um dos namespaces WMI para Configuration Manager quando executado em um Configuration Manager servidor de site primário. Um arquivo de log também é criado listando todos os namespaces verificados e se a verificação foi bem-sucedida. Lembre-se de que alguns namespaces não estarão presentes em alguns servidores de site, dependendo de quais opções foram configuradas.
Confira também
Referência de esquema WMI do provedor de SMS no Configuration Manager