Discover Cireson Portal ServiceManagement Database - SQL 2016
Cireson.Portal.Discovery.Cireson.Portal.App.Component.SMDB.SQL16 (Discovery)
Description for the new discovery.
Element properties: Object Discovery Details: Member Modules:
Source Code: <Discovery ID="Cireson.Portal.Discovery.Cireson.Portal.App.Component.SMDB.SQL16" Target="Cireson.Portal.Computer.WebServer" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Cireson.Portal.App.Component.SMDB.SQL16"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>14400</IntervalSeconds>
<SyncTime/>
<ScriptName>CiresonSMDBDiscovery.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId,$managedEntityId,$computername)
#Initialize SCOM API
$api = new-object -comObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $SourceId, $ManagedEntityId)
# Logging
$api.LogScriptEvent('CiresonSMDBDiscovery.ps1',4665,0,"Cireson SMDB Discovery Script is starting")
$website = (Get-Website | Where-Object 'Name' -NotLike 'Default Web Site')
$webconfigpath = Get-ChildItem -Path $website.Physicalpath -Recurse | Where-Object {$_.Name -match "Cireson.CacheBuilder.WindowsService.exe.config"} | Select -Expand FullName
[xml]$webconfig = get-content $webconfigpath
$cns = ($webconfig.configuration.connectionStrings.add | Where-Object {$_.Name -eq 'ServiceManagementDatabase'}).Connectionstring
$sql = (New-Object System.Data.SqlClient.SqlConnectionStringBuilder($cns))
$CiresonSMDBServer = ($SQL.Server).ToString()
$CiresonSMDBName = ($SQL.'Initial Catalog').ToString()
#Check For SQL Named Instances
$SQLInstanceName = 'MSSQLSERVER'
$string = [string]$CiresonSMDBServer
if ($string -match '\\([^\\]+)$')
{
$SQLInstanceName = $matches[1]
}
#Server Name Check
$ServerNameCheck = $CiresonSMDBServer.Split('\')[0]
$CiresonSMDBDNSNameServer = Resolve-DnsName -Name $ServerNameCheck -Type A | Select -First 1 'Name'
$Result = $CiresonSMDBName
#Read the $ServerName output value and create instance of 'Cireson.Portal.App.Component.SMDB' Class
$ServerName = $Result
$Config = $ServerName # Will be used as display name
$SQLInstanceName = $SQLInstanceName
$instance = $discoveryData.CreateClassInstance("$MPElement[Name='Cireson.Portal.App.Component.SMDB.SQL16']$")
#The hosting object is windows computer whose display name is equal to script $Servername output
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $CiresonSMDBDNSNameServer.Name)
$instance.AddProperty("$MPElement[Name='SQL16!Microsoft.SQLServer.2016.Database']/DatabaseName$", $Config)
$instance.AddProperty("$MPElement[Name='SQL16!Microsoft.SQLServer.2016.ServerRole']/InstanceName$", $SQLInstanceName)
$discoveryData.AddInstance($instance)
$discoveryData
# Logging
$api.LogScriptEvent('CiresonSMDBrDiscovery.ps1',4666,0,"Cireson SMDB Discovery Script is complete")
</Script> </ScriptBody>
<Parameters>
<Parameter>
<Name>sourceId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>240</TimeoutSeconds>
</DataSource>
</Discovery>