This object discovery discovers all instances of Microsoft Dynamics CRM servers running on Windows Servers.
This object discovery discovers all instances of Microsoft Dynamics CRM servers running on Windows Servers. This discovery creates an instance for each Microsoft Dynamics CRM server role. The following Microsoft Dynamics CRM server roles are discovered by this object: Web Application Server, Organization Web Service, Discovery Web Service, Help Server, Asynchronous Processing Service, Sandbox Processing Service, and Deployment Web Service.
This discovery leverages the script Microsoft.Dynamics.Crm.Discovery.vbs to create instances for each server role. If discovery does not find all expected objects, review the System Center Operations Manager event log for errors.
Target | Microsoft.Dynamics.CRM.Servers |
Enabled | True |
Frequency | 43200 |
Remotable | False |
Discovered Classes and their attribuets: |
---|
|
Discovered relationships and their attribuets: |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.TimedScript.DiscoveryProvider | Default |
<Discovery ID="Microsoft.Dynamics.CRM.CrmServerDiscovery" Enabled="true" Target="Microsoft.Dynamics.CRM.Servers" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.Asynchronous_Processing_Service_Server">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.Deployment_Service_Server">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.Discovery_Service_Server">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.Help_Servers">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.SDK_Servers">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.Web_App_Servers">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.Sandbox_Service">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Dynamics.CRM.Email_Integration_Servers">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryRelationship TypeID="Windows!Microsoft.Windows.ComputerHostsComputerRole"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
<ScriptName>Microsoft.Dynamics.CRM.Discovery.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Property[Type="System!System.Entity"]/DisplayName$</Arguments>
<ScriptBody> Option Explicit
SetLocale("en-us")
Dim oArgs
Set oArgs = WScript.Arguments
If oArgs.Count < 3 Then
WScript.Quit -1
End If
Dim SourceID, ManagedEntityId, TargetComputer
SourceId = oArgs(0)
ManagedEntityId = oArgs(1)
TargetComputer = oArgs(2)
Dim oAPI, oDiscoveryData, oInst
Set oAPI = CreateObject("MOM.ScriptAPI")
set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)
Function GetRoles(strKey, oReg)
On Error Resume Next
Dim serverRoles
serverRoles = 0
serverRoles = oReg.RegRead(strKey)
GetRoles = serverRoles
End Function
Sub CreateInstance(strClass, oDiscData, strTarget)
Dim oInstance
set oInstance = oDiscData.CreateClassInstance(strClass)
call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", strTarget)
call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", strTarget)
call oDiscData.AddInstance(oInstance)
End Sub
Dim strServerRoles, roles, oRegistry
Set oRegistry = CreateObject("WScript.Shell")
strServerRoles = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\roles"
roles = GetRoles(strServerRoles, oRegistry)
If roles <> 0 Then
Dim WebApp, Async, Disc, Sdk, Help, DeploySdk, Sandbox, EmailConnector
WebApp = 1
Async = 2
Disc = 8
Sdk = 32768
Help = 262144
DeploySdk = 2097152
Sandbox = 16777216
EmailConnector = 536870912
Dim strWebApp, strAsyncBase, strAsync, strDisc, strSdk, strHelp, strDeploySdk, strIIS, strCommon, strSandbox, strEmailConnector
strWebApp = "$MPElement[Name='Microsoft.Dynamics.CRM.Web_App_Servers']$"
strAsyncBase = "$MPElement[Name='Microsoft.Dynamics.CRM.AsyncService_Servers']$"
strAsync = "$MPElement[Name='Microsoft.Dynamics.CRM.Asynchronous_Processing_Service_Server']$"
strDisc = "$MPElement[Name='Microsoft.Dynamics.CRM.Discovery_Service_Server']$"
strSdk = "$MPElement[Name='Microsoft.Dynamics.CRM.SDK_Servers']$"
strHelp = "$MPElement[Name='Microsoft.Dynamics.CRM.Help_Servers']$"
strDeploySdk = "$MPElement[Name='Microsoft.Dynamics.CRM.Deployment_Service_Server']$"
strIIS = "$MPElement[Name='Microsoft.Dynamics.CRM.IIS_Servers']$"
strCommon = "$MPElement[Name='Microsoft.Dynamics.CRM.Common']$"
strSandbox = "$MPElement[Name='Microsoft.Dynamics.CRM.Sandbox_Service']$"
strEmailConnector = "$MPElement[Name='Microsoft.Dynamics.CRM.Email_Integration_Servers']$"
Dim isIISbasedRole
isIISbasedRole = 0
Dim isAsyncBasedRole
isAsyncBasedRole = 0
If (WebApp And roles) Then
call CreateInstance(strWebApp, oDiscoveryData, TargetComputer)
isIISbasedRole = 1
End If
If (Async And roles) Then
call CreateInstance(strAsync, oDiscoveryData, TargetComputer)
isAsyncBasedRole = 1
End If
If (Disc And roles) Then
call CreateInstance(strDisc, oDiscoveryData, TargetComputer)
isIISbasedRole = 1
End If
If (Sdk And roles) Then
call CreateInstance(strSdk, oDiscoveryData, TargetComputer)
isIISbasedRole = 1
End If
If (Help And roles) Then
call CreateInstance(strHelp, oDiscoveryData, TargetComputer)
isIISbasedRole = 1
End If
If (DeploySdk And roles) Then
call CreateInstance(strDeploySdk, oDiscoveryData, TargetComputer)
isIISbasedRole = 1
End If
If (Sandbox And roles) Then
call CreateInstance(strSandbox, oDiscoveryData, TargetComputer)
End If
If (EmailConnector And roles) Then
call CreateInstance(strEmailConnector, oDiscoveryData, TargetComputer)
isAsyncBasedRole = 1
End If
If (isIISbasedRole = 1) Then
call CreateInstance(strIIS, oDiscoveryData, TargetComputer)
End If
If (isAsyncBasedRole = 1) Then
call CreateInstance(strAsyncBase, oDiscoveryData, TargetComputer)
End If
call CreateInstance(strCommon, oDiscoveryData, TargetComputer)
End If
Call oAPI.Return(oDiscoveryData) </ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>