Discover Monitoring database dependencies

Veritas.EnterpriseVault.12.MonitoringDatabaseDependencies.DiscoveryDS (DataSourceModuleType)

Script for discovering Monitoring database dependencies.

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
MonitoringDatabaseDependenciesDiscoveryDS DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Overrideable Parameters:

IDParameterTypeSelector
IntervalSecondsint$Config/IntervalSeconds$
LogDebugEventbool$Config/LogDebugEvent$

Source Code:

<DataSourceModuleType ID="Veritas.EnterpriseVault.12.MonitoringDatabaseDependencies.DiscoveryDS" Accessibility="Public" Batching="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="LogDebugEvent" type="xsd:boolean"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="LogDebugEvent" Selector="$Config/LogDebugEvent$" ParameterType="bool"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="MonitoringDatabaseDependenciesDiscoveryDS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>VeritasEnterpriseVaultDiscoverMonitoringDatabaseDependencies.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId, $managedEntityId, $databaseName, $databaseType, $sqlInstanceName, $sqlServerVersion, $computerEntryId, $principalName, $logDebugEvent)
#
# (c) 2016 Veritas Technologies LLC. All rights reserved.
#
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF VERITAS
# TECHNOLOGIES LLC. USE, DISCLOSURE OR REPRODUCTION IS PROHIBITED
# WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF VERITAS TECHNOLOGIES LLC.
#
# The Licensed Software and Documentation are deemed to be commercial computer
# software as defined in FAR 12.212 and subject to restricted rights as defined
# in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights"
# and DFARS 227.7202, Rights in "Commercial Computer Software or Commercial
# Computer Software Documentation," as applicable, and any successor regulations,
# whether delivered by Veritas Technologies LLC as on premises or hosted
# services. Any use, modification, reproduction release, performance, display or
# disclosure of the Licensed Software and Documentation by the U.S. Government
# shall be solely in accordance with the terms of this Agreement.
#


# Constants for event logging
Set-Variable EVENT_LEVEL_ERROR -Option Constant -Value 1
Set-Variable EVENT_LEVEL_WARNING -Option Constant -Value 2
Set-Variable EVENT_LEVEL_INFO -Option Constant -Value 4

# Constants for IDs
Set-Variable const_siteCommonId -Option Constant -Value 'Common'
Set-Variable const_siteIndexingId -Option Constant -Value 'Indexing'
Set-Variable const_serverIndexingId -Option Constant -Value 'Indexing'
Set-Variable const_serverIndexLocations -Option Constant -Value 'Server.IndexLocations'
Set-Variable const_serverCommonId -Option Constant -Value 'Common'
Set-Variable const_commonDiskSpaceId -Option Constant -Value 'Common Disk Space'
Set-Variable const_commonServicesId -Option Constant -Value 'Common Services'
Set-Variable const_indexLocationDiskSpaceId -Option Constant -Value 'Index Location Disk Space'
Set-Variable const_indexLocationConnectivityId -Option Constant -Value 'Index Location Connectivity'
Set-Variable const_indexLocationsConnectivityId -Option Constant -Value 'Index Locations Connectivity'
Set-Variable const_serverCommonConnectivityId -Option Constant -Value 'Server Connectivity'
Set-Variable const_serverIndexLocationsId -Option Constant -Value 'Server.IndexLocations'
Set-Variable const_commonDatabasesId -Option Constant -Value 'CommonDatabases'
Set-Variable const_directoryDatabaseConnectivityId -Option Constant -Value 'Directory Database Connectivity'
Set-Variable const_auditDatabaseConnectivityId -Option Constant -Value 'Audit Database Connectivity'
Set-Variable const_monitoringDatabaseConnectivityId -Option Constant -Value 'Monitoring Database Connectivity'
Set-Variable const_directoryDatabaseDiskSpaceId -Option Constant -Value 'Directory Database Disk Space'
Set-Variable const_auditDatabaseDiskSpaceId -Option Constant -Value 'Audit Database Disk Space'
Set-Variable const_monitoringDatabaseDiskSpaceId -Option Constant -Value 'Monitoring Database Disk Space'
Set-Variable const_directoryDatabaseBackupId -Option Constant -Value 'Directory Database Backup'
Set-Variable const_auditDatabaseBackupId -Option Constant -Value 'Audit Database Backup'
Set-Variable const_monitoringDatabaseBackupId -Option Constant -Value 'Monitoring Database Backup'
Set-Variable const_directoryDatabaseFragmentationId -Option Constant -Value 'Directory Database Fragmentation'
Set-Variable const_backupDirectoryDatabaseBackupId -Option Constant -Value 'Backup Directory Database Backup'
Set-Variable const_backupAuditDatabaseBackupId -Option Constant -Value 'Backup Audit Database Backup'
Set-Variable const_backupMonitoringDatabaseBackupId -Option Constant -Value 'Backup Monitoring Database Backup'
Set-Variable const_serverTargetsExchangeId -Option Constant -Value 'Exchange'
Set-Variable const_serverTargetsSharepointId -Option Constant -Value 'SharePoint'
Set-Variable const_serverTargetsFileSystemId -Option Constant -Value 'File System'
Set-Variable const_serverTargetsDominoId -Option Constant -Value 'Domino'
Set-Variable const_serverTargetsId -Option Constant -Value 'Server.Targets'
Set-Variable const_siteTargetsFileSystemId -Option Constant -Value 'Site.Targets.FileSystem'
Set-Variable const_siteTargetsDominoId -Option Constant -Value 'Site.Targets.Domino'
Set-Variable const_siteTargetsSharepointId -Option Constant -Value 'Site.Targets.Sharepoint'
Set-Variable const_siteTargetsExchangeId -Option Constant -Value 'Site.Targets.Exchange'
Set-Variable const_siteTargetsOthersId -Option Constant -Value 'Site.Targets.Others'
Set-Variable const_siteTargetsSMTPId -Option Constant -Value 'Site.Targets.SMTP'
Set-Variable const_serverTargetsOthersId -Option Constant -Value 'Others'
Set-Variable const_serverTargetsSMTPId -Option Constant -Value 'SMTP'
Set-Variable const_siteTargetsId -Option Constant -Value 'Targets'
Set-Variable const_siteStorageId -Option Constant -Value 'Storage'
Set-Variable const_serverStorageId -Option Constant -Value 'Storage'
Set-Variable const_storageDatabasesId -Option Constant -Value 'StorageDatabases'
Set-Variable const_vaultStoreDatabaseBackupId -Option Constant -Value 'Vault Store Database Backup'
Set-Variable const_fingerprintDatabaseBackupId -Option Constant -Value 'Fingerprint Database Backup'
Set-Variable const_backupVaultStoreDatabaseBackupId -Option Constant -Value 'Backup Vault Store Database Backup'
Set-Variable const_backupFingerprintDatabaseBackupId -Option Constant -Value 'Backup Fingerprint Database Backup'
Set-Variable const_serverStorageDatabasesConnectivityId -Option Constant -Value 'Databases Connectivity'
Set-Variable const_commonDatabaseConnectivityId -Option Constant -Value 'Common Database Connectivity'
Set-Variable const_storageDatabaseConnectivityId -Option Constant -Value 'Storage Database Connectivity'
Set-Variable const_vaultStoreDatabaseConnectivityId -Option Constant -Value 'Vault Store Database Connectivity'
Set-Variable const_fingerprintDatabaseConnectivityId -Option Constant -Value 'Fingerprint Database Connectivity'
Set-Variable const_vaultStoreDatabaseFragmentationId -Option Constant -Value 'Vault Store Database Fragmentation'
Set-Variable const_fingerprintDatabaseFragmentationId -Option Constant -Value 'Fingerprint Database Fragmentation'
Set-Variable const_vaultStoreDatabaseDiskSpaceId -Option Constant -Value 'Vault Store Database Disk Space'
Set-Variable const_fingerprintDatabaseDiskSpaceId -Option Constant -Value 'Fingerprint Database Disk Space'
Set-Variable const_directoryDatabaseDataFileId -Option Constant -Value 'Directory Database Data File'
Set-Variable const_directoryDatabaseLogFileId -Option Constant -Value 'Directory Database Log File'
Set-Variable const_auditDatabaseDataFileId -Option Constant -Value 'Audit Database Data File'
Set-Variable const_auditDatabaseLogFileId -Option Constant -Value 'Audit Database Log File'
Set-Variable const_monitoringDatabaseDataFileId -Option Constant -Value 'Monitoring Database Data File'
Set-Variable const_monitoringDatabaseLogFileId -Option Constant -Value 'Monitoring Database Log File'
Set-Variable const_vaultStoreDatabaseDataFileId -Option Constant -Value 'Vault Store Database Data File'
Set-Variable const_vaultStoreDatabaseLogFileId -Option Constant -Value 'Vault Store Database Log File'
Set-Variable const_fingerprintDatabaseDataFileId -Option Constant -Value 'Fingerprint Database Data File'
Set-Variable const_fingerprintDatabaseLogFileId -Option Constant -Value 'Fingerprint Database Log File'

# Constants for display strings
Set-Variable const_databaseDataFileType -Option Constant -Value 'Data'
Set-Variable const_databaseLogFileType -Option Constant -Value 'Log'
Set-Variable const_connectivityOn -Option Constant -Value 'Connectivity on '
Set-Variable const_diskSpaceOn -Option Constant -Value 'Disk Space on '
Set-Variable const_backupOn -Option Constant -Value 'Backup on '
Set-Variable const_directoryDatabaseType -Option Constant -Value 'Directory'
Set-Variable const_auditDatabaseType -Option Constant -Value 'Audit'
Set-Variable const_monitoringDatabaseType -Option Constant -Value 'Monitoring'
Set-Variable const_vaultStoreDatabaseType -Option Constant -Value 'Vault Store'
Set-Variable const_fingerprintDatabaseType -Option Constant -Value 'Fingerprint'
Set-Variable const_notAvailable -Option Constant -Value "Not Available"
Set-Variable const_adminService -Option Constant -Value "Admin Service"
Set-Variable const_directoryService -Option Constant -Value "Directory Service"
Set-Variable const_shoppingService -Option Constant -Value "Shopping Service"
Set-Variable const_taskControllerService -Option Constant -Value "Task Controller Service"
Set-Variable const_smtpService -Option Constant -Value "SMTP Service"
Set-Variable const_iisService -Option Constant -Value "IIS Service"
Set-Variable const_msmqService -Option Constant -Value "Message Queuing Service"
Set-Variable const_storageService -Option Constant -Value "Storage Service"
Set-Variable const_notApplicable -Option Constant -Value "Not Applicable"
Set-Variable const_application -Option Constant -Value 'Application'
Set-Variable const_temporary -Option Constant -Value 'Temporary'
Set-Variable const_cache -Option Constant -Value 'Cache'
Set-Variable const_applicationLocation -Option Constant -Value 'Application Location'
Set-Variable const_temporaryLocation -Option Constant -Value 'Temporary Location'
Set-Variable const_cacheLocation -Option Constant -Value 'Cache Location'

Set-Variable const_evDirectoryDatabase -Option Constant -Value "Enterprise Vault Directory Database"
Set-Variable const_evAuditDatabase -Option Constant -Value "Enterprise Vault Audit Database"
Set-Variable const_evMonitoringDatabase -Option Constant -Value "Enterprise Vault Monitoring Database"
Set-Variable const_evVaultStoreDatabase -Option Constant -Value "Enterprise Vault Vault Store Database"
Set-Variable const_evFingerprintDatabase -Option Constant -Value "Enterprise Vault Fingerprint Database"
Set-Variable const_dataFile -Option Constant -Value "Data File"
Set-Variable const_logFile -Option Constant -Value "Log File"
Set-Variable const_connectivity -Option Constant -Value "Connectivity"
Set-Variable const_diskSpace -Option Constant -Value "Disk Space"
Set-Variable const_backup -Option Constant -Value "Backup"
Set-Variable const_fragmentation -Option Constant -Value "Fragmentation"
Set-Variable const_hyphen -Option Constant -Value " - "
Set-Variable const_space -Option Constant -Value " "
Set-Variable const_colon -Option Constant -Value ": "
Set-Variable const_dot -Option Constant -Value "."
Set-Variable const_default -Option Constant -Value "Default"
Set-Variable const_journal -Option Constant -Value "Journal"


Set-Variable const_exchangeMailbox -Option Constant -Value "Exchange Mailbox"
Set-Variable const_exchangeProvisioning -Option Constant -Value "Exchange Provisioning"
Set-Variable const_exchangeJournaling -Option Constant -Value "Exchange Journaling"
Set-Variable const_exchangePublicFolder -Option Constant -Value "Exchange Public Folder"
Set-Variable const_fileSystemArchiving -Option Constant -Value "File System Archiving"
Set-Variable const_sharePoint -Option Constant -Value "SharePoint"
Set-Variable const_dominoMailboxArchiving -Option Constant -Value "Domino Mailbox Archiving"
Set-Variable const_dominoJournaling -Option Constant -Value "Domino Journaling"
Set-Variable const_dominoProvisioning -Option Constant -Value "Domino Provisioning"
Set-Variable const_pstLocator -Option Constant -Value "PST Locator"
Set-Variable const_pstCollector -Option Constant -Value "PST Collector"
Set-Variable const_pstMigrator -Option Constant -Value "PST Migrator"
Set-Variable const_moveArchive -Option Constant -Value "Move Archive"
Set-Variable const_indexAdministration -Option Constant -Value "Index Administration"
Set-Variable const_clientAccessProvisioning -Option Constant -Value "Client Access Provisioning"
Set-Variable const_smtpArchiving -Option Constant -Value "SMTP Archiving"

Set-Variable const_yes -Option Constant -Value "Yes"
Set-Variable const_no -Option Constant -Value "No"
Set-Variable const_none -Option Constant -Value "None"

# Vault Store strings
Set-Variable const_vaultStoreStatusAvailable -Option Constant -Value "Available"
Set-Variable const_vaultStoreStatusMarkedForDeletion -Option Constant -Value "Marked for deletion"
Set-Variable const_vaultStoreStatusBeingCreated -Option Constant -Value "Being created"
Set-Variable const_vaultStoreSharingLevelNoSharing -Option Constant -Value "No sharing"
Set-Variable const_vaultStoreSharingLevelShareWithinGroup -Option Constant -Value "Share within group"
Set-Variable const_vaultStoreSharingLevelShareWithinVaultStore -Option Constant -Value "Share within Vault Store"
Set-Variable const_vaultStoreRemovalStatusRetainUntilBackup -Option Constant -Value "Retain until backup"
Set-Variable const_vaultStoreRemovalStatusRetainInStorageQueue -Option Constant -Value "Retain in storage queue"
Set-Variable const_vaultStoreRemovalStatusRemoveImmediatelyAfterArchive -Option Constant -Value "Remove immediately after archive"
Set-Variable const_vaultStoreRemovalStatusDoNotRemoveOriginalItems -Option Constant -Value "Do not remove original items"
Set-Variable const_vaultStoreSafetyCopyProperty -Option Constant -Value "SafetyCopy"
Set-Variable const_vaultStoreJournalSafetyCopyProperty -Option Constant -Value "JournalSafetyCopy"
Set-Variable const_notAvailableFromOlderVersionsOfEnterpriseVault -Option Constant -Value "Not available from older versions of Enterprise Vault"

# Vault Store Partition strings
Set-Variable const_vaultStorePartitionsConnectivityId -Option Constant -Value 'Vault Store Partitions Connectivity'
Set-Variable const_serverVaultStorePartitions -Option Constant -Value 'Server.VaultStorePartitions'
Set-Variable const_vaultStorePartitionConnectivity -Option Constant -Value "Vault Store Partition Connectivity"
Set-Variable const_vaultStorePartitionBackup -Option Constant -Value "Vault Store Partition Backup"
Set-Variable const_vaultStorePartitionDiskSpace -Option Constant -Value "Vault Store Partition Disk Space"
Set-Variable const_vaultStorePartitionStatusOpen -Option Constant -Value "Open"
Set-Variable const_vaultStorePartitionStatusClosed -Option Constant -Value "Closed"
Set-Variable const_vaultStorePartitionStatusReady -Option Constant -Value "Ready"
Set-Variable const_vaultStorePartitionStatusBeingDeleted -Option Constant -Value "Being Deleted"
Set-Variable const_vaultStorePartitionRolloverNotEnabled -Option Constant -Value "Not Enabled"
Set-Variable const_vaultStorePartitionRolloverEnabledBasedOnVolume -Option Constant -Value "Enabled based on volume"
Set-Variable const_vaultStorePartitionRolloverEnabledBasedOnTime -Option Constant -Value "Enabled based on time"
Set-Variable const_vaultStorePartitionRolloverEnabledBasedOnTimeOrVolume -Option Constant -Value "Enabled based on time or volume"

# SMTP Holding Folder strings
Set-Variable const_smtpHoldingFolderConnectivityId -Option Constant -Value 'SMTP Holding Folder Connectivity'
Set-Variable const_smtpHoldingFolderDiskSpaceId -Option Constant -Value 'SMTP Holding Folder Disk Space'
#
# (c) 2016 Veritas Technologies LLC. All rights reserved.
#
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF VERITAS
# TECHNOLOGIES LLC. USE, DISCLOSURE OR REPRODUCTION IS PROHIBITED
# WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF VERITAS TECHNOLOGIES LLC.
#
# The Licensed Software and Documentation are deemed to be commercial computer
# software as defined in FAR 12.212 and subject to restricted rights as defined
# in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights"
# and DFARS 227.7202, Rights in "Commercial Computer Software or Commercial
# Computer Software Documentation," as applicable, and any successor regulations,
# whether delivered by Veritas Technologies LLC as on premises or hosted
# services. Any use, modification, reproduction release, performance, display or
# disclosure of the Licensed Software and Documentation by the U.S. Government
# shall be solely in accordance with the terms of this Agreement.
#



# -----------------------------------------------------------
# Script containing common functions required by SCOM Scripts
# -----------------------------------------------------------

# Set strict mode on to Latest to
# -- Prohibits references to uninitialized variables, except for uninitialized variables in strings.
Set-StrictMode -Version 1;

Function Log-DebugEvent
{
param($scriptName,$message, $eventNo, $event_level, $logDebugEvent)

$message = "`n" + $message
if ($logDebugEvent -eq $true)
{
$api.LogScriptEvent($scriptName, $eventNo, $event_level, $message)
}
}

# Handle error
Function HandleError
{
param($err)
if ($err)
{
throw $err
}
}

# Checks if OS architecture is x64
Function Isx64PC
{
# Check if x86 or x64 based PC, and get 'FullVersion' registry value
$architecture = (gwmi Win32_ComputerSystem).SystemType

if ( $architecture -like 'x64*' )
{
return $true
}
elseif ( $architecture -like 'x86*' )
{
return $false
}

throw 'Invalid OS Architecture'
}

# Returns EV registry key
Function GetEVRegKey
{
$regKey = 'HKLM:\HKEY_LOCAL_MACHINE\SOFTWARE\KVS\Enterprise Vault'

if ( Isx64PC -eq "True" )
{
$regKey = 'HKLM:\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\KVS\Enterprise Vault'
}

return $regKey
}

# Returns string of requested registry value
Function GetRegString
{
param([string]$key, [string]$subKey, [string]$regValue)
return ((Get-ItemProperty ($key + $subKey)).$regValue)
}

# Loads given PowerShell SnapIn
Function LoadPSSnapin
{
param([string]$moduleName, $logDebugEvent)
$evInstallPath = GetRegString (GetEVRegKey) '\Install' 'InstallPath'
$modulePath = $evInstallPath + $moduleName + '.dll'

$message = "Adding PS module '" + $moduleName + "'."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

if ( (Get-Module -Name $moduleName -ErrorAction SilentlyContinue) -eq $null )
{
$message = "Module Path'" + $modulePath + "'."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

Import-Module $modulePath -errorvariable err
HandleError $err
}
}

# Populate ComputerEntryIDs for EV Server.
Function PopulateComputerEntryIds
{
param($evServer)

# Prepare Computer Entry Ids string
$computerEntryIDs = ""
if ($evServer.PSObject.Properties.Match('ComputerEntryIds').Count)
{
foreach ($entryId in $evServer.ComputerEntryIds)
{
if ($computerEntryIDs -ne "")
{
$computerEntryIDs += ", "
}
$computerEntryIDs += $entryId
}
}
else
{
$computerEntryIDs = $evServer.ID
}

return $computerEntryIDs
}

# Checks if EV Server version is based on input parameters
Function IsEVVersion
{
param([int]$majorVer, [int]$minorVer, [int]$servicePackVer)

# Get EV Server version
if ( ( $evVersion = GetRegString (GetEVRegKey) '\Install' 'FullVersion' -ErrorAction SilentlyContinue ) -eq $null )
{
return $null
}

$evVersionArr = $evVersion.Split(".")

if ( [System.Convert]::ToInt32($evVersionArr[0]) -eq $majorVer )
{
return $true
}
elseif ( [System.Convert]::ToInt32($evVersionArr[0]) -eq $majorVer -and [System.Convert]::ToInt32($evVersionArr[1]) -eq $minorVer )
{
return $true
}
elseif ( [System.Convert]::ToInt32($evVersionArr[0]) -eq $majorVer -and [System.Convert]::ToInt32($evVersionArr[1]) -eq $minorVer -and [System.Convert]::ToInt32($evVersionArr[2]) -eq $servicePackVer )
{
return $true
}

return $false
}#
# (c) 2016 Veritas Technologies LLC. All rights reserved.
#
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF VERITAS
# TECHNOLOGIES LLC. USE, DISCLOSURE OR REPRODUCTION IS PROHIBITED
# WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF VERITAS TECHNOLOGIES LLC.
#
# The Licensed Software and Documentation are deemed to be commercial computer
# software as defined in FAR 12.212 and subject to restricted rights as defined
# in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights"
# and DFARS 227.7202, Rights in "Commercial Computer Software or Commercial
# Computer Software Documentation," as applicable, and any successor regulations,
# whether delivered by Veritas Technologies LLC as on premises or hosted
# services. Any use, modification, reproduction release, performance, display or
# disclosure of the Licensed Software and Documentation by the U.S. Government
# shall be solely in accordance with the terms of this Agreement.
#


# --------------------------------------------------------------------
# Script containing common functions required by database SCOM Scripts
# --------------------------------------------------------------------

Function AddDatabaseUnhostedProperties
{
param([REF]$discoveryObj, $evDatabase, $databaseType, $siteName, $logDebugEvent)

$functionName = "Function: AddDatabaseUnhostedProperties"

if ($discoveryObj)
{
$message = $functionName + "`nDisplayName: " + $evDatabase.DBName + "`nName: " + $evDatabase.DBName + "`nType: " + $databaseType + "`nSQLInstanceName: " + $evDatabase.SQLInstanceName + "`nSQLServerVersion: " + $evDatabase.SQLServerVersion + "`nSQLServerName: " + $evDatabase.SQLServerName + "`nIsClustered: " + $evDatabase.IsClustered + "`nSiteName: " + $siteName
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $evDatabase.DBName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/Name$", $evDatabase.DBName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/Type$", $databaseType )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/SQLInstanceName$", $evDatabase.SQLInstanceName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/SQLServerVersion$", $evDatabase.SQLServerVersion)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/SQLServerName$", $evDatabase.SQLServerName )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/IsClustered$", $evDatabase.IsClustered )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/SiteName$", $siteName )
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseUnhostedKeyProperties
{
param([REF]$discoveryObj, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseUnhostedKeyProperties"

$message = $functionName + "`nDisplayName: " + $databaseName + "`nDatabaseName: " + $databaseName + "`ndatabaseType: " + $databaseType + "`nsqlInstanceName: " + $sqlInstanceName
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/Name$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/Type$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Unhosted']/SQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddBackupDatabaseUnhostedProperties
{
param([REF]$discoveryObj, $evDatabase, $databaseType, $siteName, $logDebugEvent)

$functionName = "Function: AddBackupDatabaseUnhostedProperties"

if ($discoveryObj)
{
$message = $functionName + "`nDisplayName: " + $evDatabase.DBName + "`nName: " + $evDatabase.DBName + "`nType: " + $databaseType + "`nSQLInstanceName: " + $evDatabase.SQLInstanceName + "`nSQLServerVersion: " + $evDatabase.SQLServerVersion + "`nSQLServerName: " + $evDatabase.SQLServerName + "`nIsClustered: " + $evDatabase.IsClustered + "`nSiteName: " + $siteName
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $evDatabase.DBName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/Name$", $evDatabase.DBName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/Type$", $databaseType )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/SQLInstanceName$", $evDatabase.SQLInstanceName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/SQLServerVersion$", $evDatabase.SQLServerVersion)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/SQLServerName$", $evDatabase.SQLServerName )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/IsClustered$", $evDatabase.IsClustered )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/SiteName$", $siteName )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/Id$", $evDatabase.DBName )
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddBackupDatabaseUnhostedKeyProperties
{
param([REF]$discoveryObj, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddBackupDatabaseUnhostedKeyProperties"

$message = $functionName + "`nDisplayName: " + $databaseName + "`nDatabaseName: " + $databaseName + "`ndatabaseType: " + $databaseType + "`nsqlInstanceName: " + $sqlInstanceName
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/Name$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/Type$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/SQLInstanceName$", $sqlInstanceName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.Database.Unhosted']/Id$", $databaseName )
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseHostedProperties
{
param([REF]$discoveryObj, $principalName, $evDatabase, $databaseType, $computerEntryId, $serverName, $siteName, $logDebugEvent)

$functionName = "Function: AddDatabaseHostedProperties"

if ($discoveryObj)
{
$message = $functionName + "`nDisplayName: " + $evDatabase.DBName + "`nName: " + $evDatabase.DBName + "`nType: " + $databaseType + "`nSQLInstanceName: " + $evDatabase.SQLInstanceName + "`nSQLServerVersion: " + $evDatabase.SQLServerVersion + "`nSQLServerName: " + $evDatabase.SQLServerName + "`nIsClustered: " + $evDatabase.IsClustered + "`nComputerEntryId: " + $computerEntryId + "`nServerName: " + $serverName + "`nSiteName: " + $siteName
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $evDatabase.DBName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/Name$", $evDatabase.DBName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/Type$", $databaseType )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/SQLInstanceName$", $evDatabase.SQLInstanceName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/SQLServerVersion$", $evDatabase.SQLServerVersion)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/SQLServerName$", $evDatabase.SQLServerName )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/IsClustered$", $evDatabase.IsClustered )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/ComputerEntryId$", $computerEntryId )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/ServerName$", $serverName )
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/SiteName$", $siteName )
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseHostedKeyProperties
{
param([REF]$discoveryObj, $displayName, $principalName, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseHostedKeyProperties"

if ($discoveryObj)
{
$message = $functionName + "`nDisplayName: " + $displayName + "`nPrincipalName: " + $principalName + "`nDatabaseName: " + $databaseName + "`ndatabaseType: " + $databaseType + "`nsqlInstanceName: " + $sqlInstanceName
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/Name$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/Type$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/SQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddStorageDatabaseHostedProperties
{
param([REF]$discoveryObj, $principalName, $evDatabase, $databaseType, $computerEntryId, $serverName, $siteName, $logDebugEvent)

$functionName = "Function: AddStorageDatabaseHostedProperties"

if ($discoveryObj)
{
$message = $functionName + "`nDisplayName: " + $evDatabase.DBName + "`nName: " + $evDatabase.DBName + "`nType: " + $databaseType + "`nSQLInstanceName: " + $evDatabase.SQLInstanceName + "`nSQLServerVersion: " + $evDatabase.SQLServerVersion + "`nSQLServerName: " + $evDatabase.SQLServerName + "`nIsClustered: " + $evDatabase.IsClustered + "`nComputerEntryId: " + $computerEntryId + "`nServerName: " + $serverName + "`nSiteName: " + $siteName + "`nVault Store Entry ID: " + $evDatabase.EntryId + "`nVault Store Name: " + $evDatabase.VaultStoreName + "`nVault Store Group Name: " + $evDatabase.VaultStoreGroupName + "`nStorage Service Entry ID: " + $evDatabase.StorageServiceEntryId
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

AddDatabaseHostedProperties $discoveryObj $principalName $evDatabase $databaseType $computerEntryId $serverName $siteName false
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabase.Hosted']/EntryId$", $evDatabase.EntryId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabase.Hosted']/VaultStoreName$", $evDatabase.VaultStoreName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabase.Hosted']/VaultStoreGroupName$", $evDatabase.VaultStoreGroupName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabase.Hosted']/StorageServiceEntryId$", $evDatabase.StorageServiceEntryId)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseFileProperties
{
param([REF]$discoveryObj, $displayName, $principalName, $databaseName, $databaseType, $sqlInstanceName, $databaseDiskSpaceId, $databaseFileInfo, $databaseFileType, $logDebugEvent)

$functionName = "Function: AddDatabaseFileProperties"

if ($discoveryObj)
{
$message = $functionName + "`nDisplayName: " + $displayName + "`nPrincipalName: " + $principalName + "`nDatabaseName: " + $databaseName + "`ndatabaseType: " + $databaseType + "`nsqlInstanceName: " + $sqlInstanceName + "`ndatabaseFileInfo.LogicalFileName: " + $databaseFileInfo.LogicalFileName + "`ndatabaseFileType: " + $databaseFileType + "`ndatabaseFileInfo.PhysicalFileName: " + $databaseFileInfo.PhysicalFileName
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/Name$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/Type$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Database.Hosted']/SQLInstanceName$", $sqlInstanceName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DiskSpace']/Id$", $databaseDiskSpaceId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFile']/LogicalName$", $databaseFileInfo.LogicalFileName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFile']/Type$", $databaseFileType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFile']/PhysicalName$", $databaseFileInfo.PhysicalFileName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseBackupKeyProperties
{
param([REF]$discoveryObj, $databaseBackupId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseBackupKeyProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup']/Id$", $databaseBackupId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseBackup']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseBackup']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseBackup']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseDiskSpaceKeyProperties
{
param([REF]$discoveryObj, $databaseDiskSpaceId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseDiskSpaceKeyProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DiskSpace']/Id$", $databaseDiskSpaceId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseDiskSpace']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseDiskSpace']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseDiskSpace']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseBackupUnhostedProperties
{
param([REF]$discoveryObj, $displayName, $databaseBackupId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseBackupUnhostedProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup']/Id$", $databaseBackupId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseBackup.Unhosted']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseBackup.Unhosted']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseBackup.Unhosted']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseDiskSpaceUnhostedProperties
{
param([REF]$discoveryObj, $displayName, $databaseDiskSpaceId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseDiskSpaceUnhostedProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DiskSpace']/Id$", $databaseDiskSpaceId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseDiskSpace.Unhosted']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseDiskSpace.Unhosted']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseDiskSpace.Unhosted']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddBackupDatabaseBackupUnhostedProperties
{
param([REF]$discoveryObj, $displayName, $databaseBackupId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddBackupDatabaseBackupUnhostedProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup']/Id$", $databaseBackupId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackup.Unhosted']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackup.Unhosted']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackup.Unhosted']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseConnectivityProperties
{
param([REF]$discoveryObj, $displayName, $principalName, $databaseConnectivityId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseConnectivityProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseConnectivity']/Id$", $databaseConnectivityId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseConnectivity']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseConnectivity']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseConnectivity']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseConnectivityRollupHostedProperties
{
param([REF]$discoveryObj, $displayName, $principalName, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseConnectivityRollupHostedProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseConnectivityRollup.Hosted']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseConnectivityRollup.Hosted']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseConnectivityRollup.Hosted']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddServerCommonConnectivityProperties
{
param([REF]$discoveryObj, $displayName, $principalName, $computerEntryId, $commonId, $serverCommonConnectivityId, $logDebugEvent)

$functionName = "Function: AddServerCommonConnectivityProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server']/EntryId$", $computerEntryId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server.Common']/Id$", $commonId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Connectivity']/Id$", $serverCommonConnectivityId)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddServerStorageDatabasesConnectivityProperties
{
param([REF]$discoveryObj, $displayName, $principalName, $computerEntryId, $storageId, $serverStorageDatabasesConnectivityId, $logDebugEvent)

$functionName = "Function: AddServerStorageDatabasesConnectivityProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server']/EntryId$", $computerEntryId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server.Storage']/Id$", $storageId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Connectivity']/Id$", $serverStorageDatabasesConnectivityId)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseFragmentationKeyProperties
{
param([REF]$discoveryObj, $databaseFragmentationId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseFragmentationKeyProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Fragmentation']/Id$", $databaseFragmentationId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFragmentation']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFragmentation']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFragmentation']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}

Function AddDatabaseFragmentationUnhostedProperties
{
param([REF]$discoveryObj, $displayName, $databaseFragmentationId, $databaseName, $databaseType, $sqlInstanceName, $logDebugEvent)

$functionName = "Function: AddDatabaseFragmentationUnhostedProperties"

if ($discoveryObj)
{
$discoveryObj.Value.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $displayName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Fragmentation']/Id$", $databaseFragmentationId)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFragmentation.Unhosted']/DatabaseName$", $databaseName)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFragmentation.Unhosted']/DatabaseType$", $databaseType)
$discoveryObj.Value.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFragmentation.Unhosted']/DatabaseSQLInstanceName$", $sqlInstanceName)
}
else
{
throw '(' + $functionName + ') Null Exception. Discovery object cannot be null.'
}
}
#
# (c) 2016 Veritas Technologies LLC. All rights reserved.
#
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF VERITAS
# TECHNOLOGIES LLC. USE, DISCLOSURE OR REPRODUCTION IS PROHIBITED
# WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF VERITAS TECHNOLOGIES LLC.
#
# The Licensed Software and Documentation are deemed to be commercial computer
# software as defined in FAR 12.212 and subject to restricted rights as defined
# in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights"
# and DFARS 227.7202, Rights in "Commercial Computer Software or Commercial
# Computer Software Documentation," as applicable, and any successor regulations,
# whether delivered by Veritas Technologies LLC as on premises or hosted
# services. Any use, modification, reproduction release, performance, display or
# disclosure of the Licensed Software and Documentation by the U.S. Government
# shall be solely in accordance with the terms of this Agreement.
#

$SCRIPT_NAME = 'MonitoringDatabaseDependenciesDiscovery.ps1'

Function DiscoverMonitoringDatabaseDependencies
{
$functionName = 'Function: DiscoverMonitoringDatabaseDependencies'

$discoveryData = $api.CreateDiscoveryData(0, $sourceId, $managedEntityId)

# Load 'Symantec.EnterpriseVault.PowerShell.Core' PS snapin
LoadPSSnapin 'Symantec.EnterpriseVault.PowerShell.Core' $logDebugEvent

# Get site entry id, which is not available in the hosting parent(s)
$site = Get-EVSite -errorvariable err
HandleError $err
$siteEntryId = $site.ID

##########################
# Re-discover 'Site.Common' object to set
# - SiteCommonContainsCommonDatabases relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Site.Common object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$siteCommonDiscovery = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Site.Common']$")
$siteCommonDiscovery.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $const_siteCommonId)
$siteCommonDiscovery.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Site.Common']/Id$", $const_siteCommonId)
$siteCommonDiscovery.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Site.Common']/SiteEntryId$", $siteEntryId)

##########################
# Discover CommonDatabases object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabases object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabases = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabases']$")
$commonDatabases.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $const_commonDatabasesId)
$commonDatabases.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$commonDatabases.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabases']/Id$", $const_commonDatabasesId)
$discoveryData.AddInstance($commonDatabases)

##########################
# Discover SiteCommonContainsCommonDatabases relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.SiteCommonContainsCommonDatabases relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$siteCommonContainsCommonDatabasesRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.SiteCommonContainsCommonDatabases']$")
$siteCommonContainsCommonDatabasesRelDiscovery.Source = $siteCommonDiscovery
$siteCommonContainsCommonDatabasesRelDiscovery.Target = $commonDatabases
$discoveryData.AddInstance($siteCommonContainsCommonDatabasesRelDiscovery)


##########################
# Re-discover MonitoringDatabase.Unhosted instance to discover
# - CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted relationship
##########################
$message = $functionName + "`nRe-discover MonitoringDatabase.Unhosted instance to set CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted relationships."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabase.Unhosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabase.Unhosted']$")
AddDatabaseUnhostedKeyProperties ([REF]$monitoringDatabaseUnhosted) $databaseName $databaseType $sqlInstanceName $logDebugEvent


####################################################
# Discover Backup components
####################################################

##########################
# Discover MonitoringDatabaseBackup.Hosted object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseBackup.Hosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseBackup = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseBackup.Hosted']$")
AddDatabaseHostedKeyProperties ([REF]$monitoringDatabaseBackup) ($const_evMonitoringDatabase + $const_hyphen + $const_backup) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
AddDatabaseBackupKeyProperties ([REF]$monitoringDatabaseBackup) $const_monitoringDatabaseBackupId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseBackup)

##########################
# Discover CommonDatabaseBackup.Unhosted object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseBackup.Unhosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseBackupUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseBackup.Unhosted']$")
AddDatabaseBackupUnhostedProperties ([REF]$monitoringDatabaseBackupUnhosted) ($const_evMonitoringDatabase + $const_hyphen + $const_backup) $const_monitoringDatabaseBackupId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseBackupUnhosted)

##########################
# Discover Backup.DatabaseBackup.Unhosted object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Backup.DatabaseBackup.Unhosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$backupMonitoringDatabaseBackupUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackup.Unhosted']$")
AddBackupDatabaseBackupUnhostedProperties ([REF]$backupMonitoringDatabaseBackupUnhosted) ($const_evMonitoringDatabase + $const_hyphen + $const_backup) $const_backupMonitoringDatabaseBackupId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($backupMonitoringDatabaseBackupUnhosted)

##########################
# Discover CommonDatabasesContainsCommonDatabaseBackup relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabasesContainsCommonDatabaseBackup relationship."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabasesContainsCommonDatabaseBackup = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabasesContainsCommonDatabaseBackup']$")
$commonDatabasesContainsCommonDatabaseBackup.Source = $commonDatabases
$commonDatabasesContainsCommonDatabaseBackup.Target = $monitoringDatabaseBackup
$discoveryData.AddInstance($commonDatabasesContainsCommonDatabaseBackup)

##########################
# Discover DatabaseBackupUnhostedContainsDatabaseBackup relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.DatabaseBackupUnhostedContainsDatabaseBackup relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$databaseBackupUnhostedContainsDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseBackupUnhostedContainsDatabaseBackup']$")
$databaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Source = $monitoringDatabaseBackupUnhosted
$databaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Target = $monitoringDatabaseBackup
$discoveryData.AddInstance($databaseBackupUnhostedContainsDatabaseBackupRelDiscovery)

##########################
# Discover Backup.DatabaseBackupRollup.Unhosted object to hide unnecessary dependecies displayed in the details pane of Backup -&gt; Database state view
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Backup.DatabaseBackupRollup.Unhosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$backupMonitoringDatabaseBackupRollupUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackupRollup.Unhosted']$")
$backupMonitoringDatabaseBackupRollupUnhosted.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackupRollup.Unhosted']/DatabaseName$", $databaseName)
$backupMonitoringDatabaseBackupRollupUnhosted.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackupRollup.Unhosted']/DatabaseType$", $databaseType)
$backupMonitoringDatabaseBackupRollupUnhosted.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DatabaseBackupRollup.Unhosted']/DatabaseSQLInstanceName$", $sqlInstanceName)
$discoveryData.AddInstance($backupMonitoringDatabaseBackupRollupUnhosted)

##########################
# Discover BackupDatabaseBackupRollupUnhostedContainsMonitoringDatabaseBackupHosted relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.BackupDatabaseBackupRollupUnhostedContainsMonitoringDatabaseBackupHosted relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.BackupDatabaseBackupRollupUnhostedContainsMonitoringDatabaseBackupHosted']$")
$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Source = $backupMonitoringDatabaseBackupRollupUnhosted
$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Target = $monitoringDatabaseBackup
$discoveryData.AddInstance($backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery)

##########################
# Discover BackupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhosted relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.BackupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhosted relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$backupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhostedRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.BackupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhosted']$")
$backupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhostedRelDiscovery.Source = $backupMonitoringDatabaseBackupUnhosted
$backupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhostedRelDiscovery.Target = $backupMonitoringDatabaseBackupRollupUnhosted
$discoveryData.AddInstance($backupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhostedRelDiscovery)

##########################
# Discover CommonDatabaseUnhostedContainsCommonDatabaseBackupUnhosted relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseBackupUnhosted relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseBackupUnhosted']$")
$monitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery.Source = $monitoringDatabaseUnhosted
$monitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery.Target = $monitoringDatabaseBackupUnhosted
$discoveryData.AddInstance($monitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery)

##########################
# Re-discover Backup.MonitoringDatabase.Unhosted instance to discover
# - BackupDatabaseUnhostedContainsBackupDatabaseBackupUnhosted relationship
##########################
$message = $functionName + "`nRe-discover Backup.MonitoringDatabase.Unhosted instance to set BackupDatabaseUnhostedContainsBackupDatabaseBackupUnhosted relationships."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Backup.MonitoringDatabase.Unhosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$backupMonitoringDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.MonitoringDatabase.Unhosted']$")
AddBackupDatabaseUnhostedKeyProperties ([REF]$backupMonitoringDatabaseUnhosted) $databaseName $databaseType $sqlInstanceName $logDebugEvent

##########################
# Discover BackupDatabaseUnhostedContainsBackupDatabaseBackupUnhosted relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.BackupDatabaseUnhostedContainsBackupDatabaseBackupUnhosted relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$backupMonitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.BackupDatabaseUnhostedContainsBackupDatabaseBackupUnhosted']$")
$backupMonitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery.Source = $backupMonitoringDatabaseUnhosted
$backupMonitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery.Target = $backupMonitoringDatabaseBackupUnhosted
$discoveryData.AddInstance($backupMonitoringDatabaseUnhostedContainsMonitoringDatabaseBackupRelDiscovery)



####################################################
# Discover Connectivity components
####################################################

##########################
# Discover CommonDatabaseConnectivityRollup.Hosted object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseConnectivityRollup.Hosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabaseConnectivityRollupHosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseConnectivityRollup.Hosted']$")
AddDatabaseConnectivityRollupHostedProperties ([REF]$commonDatabaseConnectivityRollupHosted) ($principalName + $const_hyphen + $const_evMonitoringDatabase + $const_hyphen + $const_connectivity) $principalName $databaseName $databaseType $sqlInstanceName
$discoveryData.AddInstance($commonDatabaseConnectivityRollupHosted)

##########################
# Discover CommonDatabaseUnhostedContainsCommonDatabaseConnectivityRollupHosted relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseConnectivityRollupHosted relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabaseUnhostedContainsCommonDatabaseConnectivityRollupHostedRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseConnectivityRollupHosted']$")
$commonDatabaseUnhostedContainsCommonDatabaseConnectivityRollupHostedRelDiscovery.Source = $monitoringDatabaseUnhosted
$commonDatabaseUnhostedContainsCommonDatabaseConnectivityRollupHostedRelDiscovery.Target = $commonDatabaseConnectivityRollupHosted
$discoveryData.AddInstance($commonDatabaseUnhostedContainsCommonDatabaseConnectivityRollupHostedRelDiscovery)

##########################
# Discover CommonDatabaseConnectivity object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseConnectivity object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabaseConnectivity = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseConnectivity']$")
AddDatabaseConnectivityProperties ([REF]$commonDatabaseConnectivity) ($principalName + $const_hyphen + $const_evMonitoringDatabase + $const_hyphen + $const_connectivity) $principalName $databaseName $databaseType $sqlInstanceName
$discoveryData.AddInstance($commonDatabaseConnectivity)

##########################
# Discover CommonDatabaseConnectivityRollupHostedContainsCommonDatabaseConnectivity relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseConnectivityRollupHostedContainsCommonDatabaseConnectivity relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabaseConnectivityRollupHostedContainsCommonDatabaseConnectivityRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseConnectivityRollupHostedContainsCommonDatabaseConnectivity']$")
$commonDatabaseConnectivityRollupHostedContainsCommonDatabaseConnectivityRelDiscovery.Source = $commonDatabaseConnectivityRollupHosted
$commonDatabaseConnectivityRollupHostedContainsCommonDatabaseConnectivityRelDiscovery.Target = $commonDatabaseConnectivity
$discoveryData.AddInstance($commonDatabaseConnectivityRollupHostedContainsCommonDatabaseConnectivityRelDiscovery)

##########################
# Discover MonitoringDatabaseConnectivity object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseConnectivity object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseConnectivity = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseConnectivity']$")
AddDatabaseHostedKeyProperties ([REF]$monitoringDatabaseConnectivity) ($const_evMonitoringDatabase + $const_hyphen + $const_connectivity) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
$monitoringDatabaseConnectivity.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Connectivity']/Id$", $const_monitoringDatabaseConnectivityId)
$discoveryData.AddInstance($monitoringDatabaseConnectivity)

##########################
# Discover CommonDatabaseConnectivityContainsMonitoringDatabaseConnectivity relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseConnectivityContainsMonitoringDatabaseConnectivity relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabaseConnectivityContainsMonitoringDatabaseConnectivityRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseConnectivityContainsMonitoringDatabaseConnectivity']$")
$commonDatabaseConnectivityContainsMonitoringDatabaseConnectivityRelDiscovery.Source = $commonDatabaseConnectivity
$commonDatabaseConnectivityContainsMonitoringDatabaseConnectivityRelDiscovery.Target = $monitoringDatabaseConnectivity
$discoveryData.AddInstance($commonDatabaseConnectivityContainsMonitoringDatabaseConnectivityRelDiscovery)

##########################
# Re-discover Server.CommonConnectivity instance to set
# - ServerCommonConnectivityContainsCommonDatabaseConnectivityHosted relationship
##########################
$message = $functionName + "`nRe-discover Server.CommonConnectivity instance to set ServerCommonConnectivityContainsCommonDatabaseConnectivityHosted relationship."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Server.CommonConnectivity object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$serverCommonConnectivity = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Server.CommonConnectivity']$")
AddServerCommonConnectivityProperties ([REF]$serverCommonConnectivity) $const_serverCommonConnectivityId $principalName $computerEntryId $const_serverCommonId $const_serverCommonConnectivityId

##########################
# Discover ServerCommonConnectivityContainsCommonDatabaseConnectivityHosted relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.ServerCommonConnectivityContainsCommonDatabaseConnectivityHosted relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$serverCommonConnectivityContainsCommonDatabaseConnectivityHostedRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.ServerCommonConnectivityContainsCommonDatabaseConnectivityHosted']$")
$serverCommonConnectivityContainsCommonDatabaseConnectivityHostedRelDiscovery.Source = $serverCommonConnectivity
$serverCommonConnectivityContainsCommonDatabaseConnectivityHostedRelDiscovery.Target = $monitoringDatabaseConnectivity
$discoveryData.AddInstance($serverCommonConnectivityContainsCommonDatabaseConnectivityHostedRelDiscovery)



####################################################
# Discover Monitoring Databases' file info
####################################################
Try
{
$message = $functionName + "`nInvoking cmdlet: Get-EVDatabaseFileInfo."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$monitoringDatabaseType = [Symantec.EnterpriseVault.PowerShell.Core.EVDatabaseType]::Monitoring
$databaseFilesInfo = Get-EVDatabaseFileInfo $monitoringDatabaseType -errorvariable err
HandleError $err

$isDiskSpaceObjectCreated = $false
foreach ($databaseFileInfo in $databaseFilesInfo)
{
# Disk space can be monitored only after SQL Serve version 2008 R2 SP1.
# Get-EVDatabaseFileInfo cmdlet returns space information only when the SQL Serve version 2008 R2 SP1 and above.
# Create Disk Space object once only when we get some disk space info.
# Checking 'TotalQuotaGBytesUsed' as the monitoring is depenent on used disk space.
if($databaseFileInfo.TotalQuotaGBytesUsed -ne $null)
{

if($isDiskSpaceObjectCreated -eq $false)
{
####################################################
# Discover DiskSpace components
####################################################

##########################
# Discover MonitoringDatabaseDiskSpace.Hosted object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseDiskSpace.Hosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseDiskSpace = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseDiskSpace.Hosted']$")
AddDatabaseHostedKeyProperties ([REF]$monitoringDatabaseDiskSpace) ($const_evMonitoringDatabase + $const_hyphen + $const_diskSpace) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
AddDatabaseDiskSpaceKeyProperties ([REF]$monitoringDatabaseDiskSpace) $const_monitoringDatabaseDiskSpaceId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseDiskSpace)

##########################
# Discover CommonDatabaseDiskSpace.Unhosted object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseDiskSpace.Unhosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseDiskSpaceUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseDiskSpace.Unhosted']$")
AddDatabaseDiskSpaceUnhostedProperties ([REF]$monitoringDatabaseDiskSpaceUnhosted) ($const_evMonitoringDatabase + $const_hyphen + $const_diskSpace) $const_monitoringDatabaseDiskSpaceId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseDiskSpaceUnhosted)

##########################
# Discover CommonDatabasesContainsCommonDatabaseDiskSpace relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabasesContainsCommonDatabaseDiskSpace relationship."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$commonDatabasesContainsCommonDatabaseDiskSpace = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabasesContainsCommonDatabaseDiskSpace']$")
$commonDatabasesContainsCommonDatabaseDiskSpace.Source = $commonDatabases
$commonDatabasesContainsCommonDatabaseDiskSpace.Target = $monitoringDatabaseDiskSpace
$discoveryData.AddInstance($commonDatabasesContainsCommonDatabaseDiskSpace)

##########################
# Discover DatabaseDiskSpaceUnhostedContainsDatabaseDiskSpace relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.DatabaseDiskSpaceUnhostedContainsDatabaseDiskSpace relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$databaseDiskSpaceUnhostedContainsDatabaseDiskSpaceRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseDiskSpaceUnhostedContainsDatabaseDiskSpace']$")
$databaseDiskSpaceUnhostedContainsDatabaseDiskSpaceRelDiscovery.Source = $monitoringDatabaseDiskSpaceUnhosted
$databaseDiskSpaceUnhostedContainsDatabaseDiskSpaceRelDiscovery.Target = $monitoringDatabaseDiskSpace
$discoveryData.AddInstance($databaseDiskSpaceUnhostedContainsDatabaseDiskSpaceRelDiscovery)

##########################
# Discover CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseUnhostedContainsMonitoringDatabaseDiskSpaceRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted']$")
$monitoringDatabaseUnhostedContainsMonitoringDatabaseDiskSpaceRelDiscovery.Source = $monitoringDatabaseUnhosted
$monitoringDatabaseUnhostedContainsMonitoringDatabaseDiskSpaceRelDiscovery.Target = $monitoringDatabaseDiskSpaceUnhosted
$discoveryData.AddInstance($monitoringDatabaseUnhostedContainsMonitoringDatabaseDiskSpaceRelDiscovery)

# set to true
$isDiskSpaceObjectCreated = $true # Do not create disk components when already created

}

}
switch($databaseFileInfo.FileType)
{
([Symantec.EnterpriseVault.PowerShell.Core.DatabaseFileType]::Data)
{
##########################
# Discover MonitoringDatabaseDataFile object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseDataFile object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseDataFile = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseDataFile']$")
AddDatabaseFileProperties ([REF]$monitoringDatabaseDataFile) ($const_evMonitoringDatabase + $const_space + $const_dataFile) $principalName $databaseName $databaseType $sqlInstanceName $const_monitoringDatabaseDataFileId $databaseFileInfo $const_databaseDataFileType $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseDataFile)

##########################
# Discover MonitoringDatabaseBackupHostedContainsMonitoringDatabaseDataFile relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseBackupHostedContainsMonitoringDatabaseDataFile relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseBackupHostedContainsMonitoringDatabaseDataFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseBackupHostedContainsMonitoringDatabaseDataFile']$")
$monitoringDatabaseBackupHostedContainsMonitoringDatabaseDataFileRelDiscovery.Source = $monitoringDatabaseBackup
$monitoringDatabaseBackupHostedContainsMonitoringDatabaseDataFileRelDiscovery.Target = $monitoringDatabaseDataFile
$discoveryData.AddInstance($monitoringDatabaseBackupHostedContainsMonitoringDatabaseDataFileRelDiscovery)


if($databaseFileInfo.TotalQuotaGBytesUsed -ne $null)
{
##########################
# Discover MonitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseDataFile relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseDataFile relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseDataFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseDataFile']$")
$monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseDataFileRelDiscovery.Source = $monitoringDatabaseDiskSpace
$monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseDataFileRelDiscovery.Target = $monitoringDatabaseDataFile
$discoveryData.AddInstance($monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseDataFileRelDiscovery)
}
}

([Symantec.EnterpriseVault.PowerShell.Core.DatabaseFileType]::Log)
{
##########################
# Discover MonitoringDatabaseLogFile object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseLogFile object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseLogFile = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseLogFile']$")
AddDatabaseFileProperties ([REF]$monitoringDatabaseLogFile) ($const_evMonitoringDatabase + $const_space + $const_logFile) $principalName $databaseName $databaseType $sqlInstanceName $const_monitoringDatabaseLogFileId $databaseFileInfo $const_databaseLogFileType $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseLogFile)

##########################
# Discover MonitoringDatabaseBackupHostedContainsMonitoringDatabaseLogFile relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseBackupHostedContainsMonitoringDatabaseLogFile relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseBackupHostedContainsMonitoringDatabaseLogFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseBackupHostedContainsMonitoringDatabaseLogFile']$")
$monitoringDatabaseBackupHostedContainsMonitoringDatabaseLogFileRelDiscovery.Source = $monitoringDatabaseBackup
$monitoringDatabaseBackupHostedContainsMonitoringDatabaseLogFileRelDiscovery.Target = $monitoringDatabaseLogFile
$discoveryData.AddInstance($monitoringDatabaseBackupHostedContainsMonitoringDatabaseLogFileRelDiscovery)

if($databaseFileInfo.TotalQuotaGBytesUsed -ne $null)
{
##########################
# Discover MonitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseLogFile relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseLogFile relationship object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseLogFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseLogFile']$")
$monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseLogFileRelDiscovery.Source = $monitoringDatabaseDiskSpace
$monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseLogFileRelDiscovery.Target = $monitoringDatabaseLogFile
$discoveryData.AddInstance($monitoringDatabaseDiskSpaceHostedContainsMonitoringDatabaseLogFileRelDiscovery)
}

}
}
}
}
Catch [system.exception]
{
$message = 'Error discovering Monitoring database files.' + "`nError: " + $_
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_ERROR true
}

$discoveryData
}

Try
{
$api = new-object -comObject &#x2018;MOM.ScriptAPI&#x2019;

$message = 'Discovery of MonitoringDatabase dependencies has started.'
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

DiscoverMonitoringDatabaseDependencies

$message = 'Discovery of MonitoringDatabase dependencies is complete.'
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
}
Catch [system.exception]
{
$message = 'Error in discovery of MonitoringDatabase dependencies.' + "`nError: " + $_
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_ERROR true
}
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>sourceID</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityID</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>databaseName</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.Database.Hosted"]/Name$</Value>
</Parameter>
<Parameter>
<Name>databaseType</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.Database.Hosted"]/Type$</Value>
</Parameter>
<Parameter>
<Name>sqlInstanceName</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.Database.Hosted"]/SQLInstanceName$</Value>
</Parameter>
<Parameter>
<Name>sqlServerVersion</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.Database.Hosted"]/SQLServerVersion$</Value>
</Parameter>
<Parameter>
<Name>computerEntryId</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.Database.Hosted"]/ComputerEntryId$</Value>
</Parameter>
<Parameter>
<Name>principalName</Name>
<Value>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
<Parameter>
<Name>logDebugEvent</Name>
<Value>$Config/LogDebugEvent$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="MonitoringDatabaseDependenciesDiscoveryDS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>