Discover Audit database dependencies

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

Script for discovering Audit database dependencies.

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

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

Overrideable Parameters:

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

Source Code:

<DataSourceModuleType ID="Veritas.EnterpriseVault.12.AuditDatabaseDependencies.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="AuditDatabaseDependenciesDiscoveryDS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>VeritasEnterpriseVaultDiscoverAuditDatabaseDependencies.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 = 'AuditDatabaseDependenciesDiscovery.ps1'

Function DiscoverAuditDatabaseDependencies
{
$functionName = 'Function: DiscoverAuditDatabaseDependencies'

$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 AuditDatabase.Unhosted instance to discover
# - CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted relationship
##########################
$message = $functionName + "`nRe-discover AuditDatabase.Unhosted instance to set CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted relationships."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

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

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


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

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

$auditDatabaseBackup = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseBackup.Hosted']$")
AddDatabaseHostedKeyProperties ([REF]$auditDatabaseBackup) ($const_evAuditDatabase + $const_hyphen + $const_backup) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
AddDatabaseBackupKeyProperties ([REF]$auditDatabaseBackup) $const_auditDatabaseBackupId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($auditDatabaseBackup)

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

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

##########################
# 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

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

##########################
# 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 = $auditDatabaseBackup
$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 = $auditDatabaseBackupUnhosted
$databaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Target = $auditDatabaseBackup
$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

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

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

$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.BackupDatabaseBackupRollupUnhostedContainsAuditDatabaseBackupHosted']$")
$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Source = $backupAuditDatabaseBackupRollupUnhosted
$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Target = $auditDatabaseBackup
$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 = $backupAuditDatabaseBackupUnhosted
$backupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhostedRelDiscovery.Target = $backupAuditDatabaseBackupRollupUnhosted
$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

$auditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseBackupUnhosted']$")
$auditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery.Source = $auditDatabaseUnhosted
$auditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery.Target = $auditDatabaseBackupUnhosted
$discoveryData.AddInstance($auditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery)

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

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

$backupAuditDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.AuditDatabase.Unhosted']$")
AddBackupDatabaseUnhostedKeyProperties ([REF]$backupAuditDatabaseUnhosted) $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

$backupAuditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.BackupDatabaseUnhostedContainsBackupDatabaseBackupUnhosted']$")
$backupAuditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery.Source = $backupAuditDatabaseUnhosted
$backupAuditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery.Target = $backupAuditDatabaseBackupUnhosted
$discoveryData.AddInstance($backupAuditDatabaseUnhostedContainsAuditDatabaseBackupRelDiscovery)



####################################################
# 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_evAuditDatabase + $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 = $auditDatabaseUnhosted
$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_evAuditDatabase + $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 AuditDatabaseConnectivity object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.AuditDatabaseConnectivity object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

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

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

$commonDatabaseConnectivityContainsAuditDatabaseConnectivityRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseConnectivityContainsAuditDatabaseConnectivity']$")
$commonDatabaseConnectivityContainsAuditDatabaseConnectivityRelDiscovery.Source = $commonDatabaseConnectivity
$commonDatabaseConnectivityContainsAuditDatabaseConnectivityRelDiscovery.Target = $auditDatabaseConnectivity
$discoveryData.AddInstance($commonDatabaseConnectivityContainsAuditDatabaseConnectivityRelDiscovery)

##########################
# 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 = $auditDatabaseConnectivity
$discoveryData.AddInstance($serverCommonConnectivityContainsCommonDatabaseConnectivityHostedRelDiscovery)



####################################################
# Discover Audit Databases' file info
####################################################
Try
{
$message = $functionName + "`nInvoking cmdlet: Get-EVDatabaseFileInfo."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$auditDatabaseType = [Symantec.EnterpriseVault.PowerShell.Core.EVDatabaseType]::Audit
$databaseFilesInfo = Get-EVDatabaseFileInfo $auditDatabaseType -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 AuditDatabaseDiskSpace.Hosted object
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.AuditDatabaseDiskSpace.Hosted object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$auditDatabaseDiskSpace = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseDiskSpace.Hosted']$")
AddDatabaseHostedKeyProperties ([REF]$auditDatabaseDiskSpace) ($const_evAuditDatabase + $const_hyphen + $const_diskSpace) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
AddDatabaseDiskSpaceKeyProperties ([REF]$auditDatabaseDiskSpace) $const_auditDatabaseDiskSpaceId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($auditDatabaseDiskSpace)

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

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

##########################
# 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 = $auditDatabaseDiskSpace
$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 = $auditDatabaseDiskSpaceUnhosted
$databaseDiskSpaceUnhostedContainsDatabaseDiskSpaceRelDiscovery.Target = $auditDatabaseDiskSpace
$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

$auditDatabaseUnhostedContainsAuditDatabaseDiskSpaceRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.CommonDatabaseUnhostedContainsCommonDatabaseDiskSpaceUnhosted']$")
$auditDatabaseUnhostedContainsAuditDatabaseDiskSpaceRelDiscovery.Source = $auditDatabaseUnhosted
$auditDatabaseUnhostedContainsAuditDatabaseDiskSpaceRelDiscovery.Target = $auditDatabaseDiskSpaceUnhosted
$discoveryData.AddInstance($auditDatabaseUnhostedContainsAuditDatabaseDiskSpaceRelDiscovery)

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

}

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

$auditDatabaseDataFile = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseDataFile']$")
AddDatabaseFileProperties ([REF]$auditDatabaseDataFile) ($const_evAuditDatabase + $const_space + $const_dataFile) $principalName $databaseName $databaseType $sqlInstanceName $const_auditDatabaseDataFileId $databaseFileInfo $const_databaseDataFileType $logDebugEvent
$discoveryData.AddInstance($auditDatabaseDataFile)

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

$auditDatabaseBackupHostedContainsAuditDatabaseDataFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseBackupHostedContainsAuditDatabaseDataFile']$")
$auditDatabaseBackupHostedContainsAuditDatabaseDataFileRelDiscovery.Source = $auditDatabaseBackup
$auditDatabaseBackupHostedContainsAuditDatabaseDataFileRelDiscovery.Target = $auditDatabaseDataFile
$discoveryData.AddInstance($auditDatabaseBackupHostedContainsAuditDatabaseDataFileRelDiscovery)


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

$auditDatabaseDiskSpaceHostedContainsAuditDatabaseDataFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseDiskSpaceHostedContainsAuditDatabaseDataFile']$")
$auditDatabaseDiskSpaceHostedContainsAuditDatabaseDataFileRelDiscovery.Source = $auditDatabaseDiskSpace
$auditDatabaseDiskSpaceHostedContainsAuditDatabaseDataFileRelDiscovery.Target = $auditDatabaseDataFile
$discoveryData.AddInstance($auditDatabaseDiskSpaceHostedContainsAuditDatabaseDataFileRelDiscovery)
}
}

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

$auditDatabaseLogFile = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseLogFile']$")
AddDatabaseFileProperties ([REF]$auditDatabaseLogFile) ($const_evAuditDatabase + $const_space + $const_logFile) $principalName $databaseName $databaseType $sqlInstanceName $const_auditDatabaseLogFileId $databaseFileInfo $const_databaseLogFileType $logDebugEvent
$discoveryData.AddInstance($auditDatabaseLogFile)

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

$auditDatabaseBackupHostedContainsAuditDatabaseLogFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseBackupHostedContainsAuditDatabaseLogFile']$")
$auditDatabaseBackupHostedContainsAuditDatabaseLogFileRelDiscovery.Source = $auditDatabaseBackup
$auditDatabaseBackupHostedContainsAuditDatabaseLogFileRelDiscovery.Target = $auditDatabaseLogFile
$discoveryData.AddInstance($auditDatabaseBackupHostedContainsAuditDatabaseLogFileRelDiscovery)

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

$auditDatabaseDiskSpaceHostedContainsAuditDatabaseLogFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabaseDiskSpaceHostedContainsAuditDatabaseLogFile']$")
$auditDatabaseDiskSpaceHostedContainsAuditDatabaseLogFileRelDiscovery.Source = $auditDatabaseDiskSpace
$auditDatabaseDiskSpaceHostedContainsAuditDatabaseLogFileRelDiscovery.Target = $auditDatabaseLogFile
$discoveryData.AddInstance($auditDatabaseDiskSpaceHostedContainsAuditDatabaseLogFileRelDiscovery)
}

}
}
}
}
Catch [system.exception]
{
$message = 'Error discovering Audit 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 AuditDatabase dependencies has started.'
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

DiscoverAuditDatabaseDependencies

$message = 'Discovery of AuditDatabase dependencies is complete.'
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
}
Catch [system.exception]
{
$message = 'Error in discovery of AuditDatabase 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="AuditDatabaseDependenciesDiscoveryDS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>