Discover Vault Store database dependencies

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

Script for discovering Vault Store database dependencies.

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

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

Overrideable Parameters:

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

Source Code:

<DataSourceModuleType ID="Veritas.EnterpriseVault.12.VaultStoreDatabaseDependencies.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="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>VeritasEnterpriseVaultDiscoverVaultStoreDatabaseDependencies.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId, $managedEntityId, $databaseName, $databaseType, $sqlInstanceName, $sqlServerVersion, $computerEntryId, $vaultStoreEntryId, $storageServiceEntryId, $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 = 'VaultStoreDatabaseDependenciesDiscovery.ps1'

Function DiscoverVaultStoreDatabaseDependencies
{
$functionName = 'Function: DiscoverVaultStoreDatabaseDependencies'

$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.Storage' object to set
# - SiteStorageContainsStorageDatabases relationship
##########################
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Site.Storage object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$siteStorageDiscovery = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Site.Storage']$")
$siteStorageDiscovery.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $const_siteStorageId)
$siteStorageDiscovery.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Site.Storage']/Id$", $const_siteStorageId)
$siteStorageDiscovery.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Site.Storage']/SiteEntryId$", $siteEntryId)

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

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

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

$siteStorageContainsStorageDatabasesRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.SiteStorageContainsStorageDatabases']$")
$siteStorageContainsStorageDatabasesRelDiscovery.Source = $siteStorageDiscovery
$siteStorageContainsStorageDatabasesRelDiscovery.Target = $storageDatabases
$discoveryData.AddInstance($siteStorageContainsStorageDatabasesRelDiscovery)


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

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

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


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

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

$vaultStoreDatabaseBackup = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseBackup.Hosted']$")
AddDatabaseHostedKeyProperties ([REF]$vaultStoreDatabaseBackup) ($const_evVaultStoreDatabase + $const_hyphen + $const_backup) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
AddDatabaseBackupKeyProperties ([REF]$vaultStoreDatabaseBackup) $const_vaultStoreDatabaseBackupId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseBackup)

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

$vaultStoreDatabaseBackupUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseBackup.Unhosted']$")
AddDatabaseBackupUnhostedProperties ([REF]$vaultStoreDatabaseBackupUnhosted) ($const_evVaultStoreDatabase + $const_hyphen + $const_backup) $const_vaultStoreDatabaseBackupId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseBackupUnhosted)

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

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

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

$storageDatabasesContainsStorageDatabaseBackup = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabasesContainsStorageDatabaseBackup']$")
$storageDatabasesContainsStorageDatabaseBackup.Source = $storageDatabases
$storageDatabasesContainsStorageDatabaseBackup.Target = $vaultStoreDatabaseBackup
$discoveryData.AddInstance($storageDatabasesContainsStorageDatabaseBackup)

##########################
# 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 = $vaultStoreDatabaseBackupUnhosted
$databaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Target = $vaultStoreDatabaseBackup
$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

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

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

$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.BackupDatabaseBackupRollupUnhostedContainsVaultStoreDatabaseBackupHosted']$")
$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Source = $backupVaultStoreDatabaseBackupRollupUnhosted
$backupDatabaseBackupUnhostedContainsDatabaseBackupRelDiscovery.Target = $vaultStoreDatabaseBackup
$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 = $backupVaultStoreDatabaseBackupUnhosted
$backupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhostedRelDiscovery.Target = $backupVaultStoreDatabaseBackupRollupUnhosted
$discoveryData.AddInstance($backupDatabaseBackupUnhostedContainsBackupDatabaseBackupRollupUnhostedRelDiscovery)

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

$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseUnhostedContainsStorageDatabaseBackupUnhosted']$")
$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery.Source = $vaultStoreDatabaseUnhosted
$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery.Target = $vaultStoreDatabaseBackupUnhosted
$discoveryData.AddInstance($vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery)

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

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

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

$backupVaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.BackupDatabaseUnhostedContainsBackupDatabaseBackupUnhosted']$")
$backupVaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery.Source = $backupVaultStoreDatabaseUnhosted
$backupVaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery.Target = $backupVaultStoreDatabaseBackupUnhosted
$discoveryData.AddInstance($backupVaultStoreDatabaseUnhostedContainsVaultStoreDatabaseBackupRelDiscovery)




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

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

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

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

$storageDatabaseUnhostedContainsStorageDatabaseConnectivityRollupHostedRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseUnhostedContainsStorageDatabaseConnectivityRollupHosted']$")
$storageDatabaseUnhostedContainsStorageDatabaseConnectivityRollupHostedRelDiscovery.Source = $vaultStoreDatabaseUnhosted
$storageDatabaseUnhostedContainsStorageDatabaseConnectivityRollupHostedRelDiscovery.Target = $storageDatabaseConnectivityRollupHosted
$discoveryData.AddInstance($storageDatabaseUnhostedContainsStorageDatabaseConnectivityRollupHostedRelDiscovery)

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

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

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

$storageDatabaseConnectivityRollupHostedContainsStorageDatabaseConnectivityRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseConnectivityRollupHostedContainsStorageDatabaseConnectivity']$")
$storageDatabaseConnectivityRollupHostedContainsStorageDatabaseConnectivityRelDiscovery.Source = $storageDatabaseConnectivityRollupHosted
$storageDatabaseConnectivityRollupHostedContainsStorageDatabaseConnectivityRelDiscovery.Target = $storageDatabaseConnectivity
$discoveryData.AddInstance($storageDatabaseConnectivityRollupHostedContainsStorageDatabaseConnectivityRelDiscovery)

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

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

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

$storageDatabaseConnectivityContainsVaultStoreDatabaseConnectivityRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseConnectivityContainsVaultStoreDatabaseConnectivity']$")
$storageDatabaseConnectivityContainsVaultStoreDatabaseConnectivityRelDiscovery.Source = $storageDatabaseConnectivity
$storageDatabaseConnectivityContainsVaultStoreDatabaseConnectivityRelDiscovery.Target = $vaultStoreDatabaseConnectivity
$discoveryData.AddInstance($storageDatabaseConnectivityContainsVaultStoreDatabaseConnectivityRelDiscovery)

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

$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Server.StorageDatabasesConnectivity object."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$serverStorageDatabasesConnectivity = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Server.StorageDatabasesConnectivity']$")
AddServerStorageDatabasesConnectivityProperties ([REF]$serverStorageDatabasesConnectivity) $const_serverStorageDatabasesConnectivityId $principalName $computerEntryId $const_serverStorageId $const_serverStorageDatabasesConnectivityId

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

$serverStorageDatabasesConnectivityContainsStorageDatabaseConnectivityHostedRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.ServerStorageDatabasesConnectivityContainsStorageDatabaseConnectivityHosted']$")
$serverStorageDatabasesConnectivityContainsStorageDatabaseConnectivityHostedRelDiscovery.Source = $serverStorageDatabasesConnectivity
$serverStorageDatabasesConnectivityContainsStorageDatabaseConnectivityHostedRelDiscovery.Target = $vaultStoreDatabaseConnectivity
$discoveryData.AddInstance($serverStorageDatabasesConnectivityContainsStorageDatabaseConnectivityHostedRelDiscovery)





####################################################
# Discover Fragmentation components
####################################################

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

$vaultStoreDatabaseFragmentation = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseFragmentation.Hosted']$")
AddDatabaseHostedKeyProperties ([REF]$vaultStoreDatabaseFragmentation) ($const_evVaultStoreDatabase + $const_hyphen + $const_fragmentation) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
AddDatabaseFragmentationKeyProperties ([REF]$vaultStoreDatabaseFragmentation) $const_vaultStoreDatabaseFragmentationId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseFragmentation)

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

$vaultStoreDatabaseFragmentationUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseFragmentation.Unhosted']$")
AddDatabaseFragmentationUnhostedProperties ([REF]$vaultStoreDatabaseFragmentationUnhosted) ($const_evVaultStoreDatabase + $const_hyphen + $const_fragmentation) $const_vaultStoreDatabaseFragmentationId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseFragmentationUnhosted)

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

$storageDatabasesContainsStorageDatabaseFragmentation = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabasesContainsStorageDatabaseFragmentation']$")
$storageDatabasesContainsStorageDatabaseFragmentation.Source = $storageDatabases
$storageDatabasesContainsStorageDatabaseFragmentation.Target = $vaultStoreDatabaseFragmentation
$discoveryData.AddInstance($storageDatabasesContainsStorageDatabaseFragmentation)

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

$databaseFragmentationUnhostedContainsDatabaseFragmentationRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.DatabaseFragmentationUnhostedContainsDatabaseFragmentation']$")
$databaseFragmentationUnhostedContainsDatabaseFragmentationRelDiscovery.Source = $vaultStoreDatabaseFragmentationUnhosted
$databaseFragmentationUnhostedContainsDatabaseFragmentationRelDiscovery.Target = $vaultStoreDatabaseFragmentation
$discoveryData.AddInstance($databaseFragmentationUnhostedContainsDatabaseFragmentationRelDiscovery)

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

$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseFragmentationRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseUnhostedContainsStorageDatabaseFragmentationUnhosted']$")
$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseFragmentationRelDiscovery.Source = $vaultStoreDatabaseUnhosted
$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseFragmentationRelDiscovery.Target = $vaultStoreDatabaseFragmentationUnhosted
$discoveryData.AddInstance($vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseFragmentationRelDiscovery)


####################################################
# Find VaultStore Databases' file info
####################################################
Try
{
$message = $functionName + "`nInvoking cmdlet: Get-EVDatabaseFileInfo."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$vaultStoreDatabaseType = [Symantec.EnterpriseVault.PowerShell.Core.EVDatabaseType]::VaultStore
$databaseFilesInfo = Get-EVDatabaseFileInfo $vaultStoreDatabaseType -EntryId $vaultStoreEntryId -StorageServiceEntryId $storageServiceEntryId -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)
{
# set to true
$isDiskSpaceObjectCreated = $true # Do not create disk components when already created

####################################################
# Discover DiskSpace components
####################################################

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

$vaultStoreDatabaseDiskSpace = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseDiskSpace.Hosted']$")
AddDatabaseHostedKeyProperties ([REF]$vaultStoreDatabaseDiskSpace) ($const_evVaultStoreDatabase + $const_hyphen + $const_diskSpace) $principalName $databaseName $databaseType $sqlInstanceName $logDebugEvent
AddDatabaseDiskSpaceKeyProperties ([REF]$vaultStoreDatabaseDiskSpace) $const_vaultStoreDatabaseDiskSpaceId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseDiskSpace)

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

$vaultStoreDatabaseDiskSpaceUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseDiskSpace.Unhosted']$")
AddDatabaseDiskSpaceUnhostedProperties ([REF]$vaultStoreDatabaseDiskSpaceUnhosted) ($const_evVaultStoreDatabase + $const_hyphen + $const_diskSpace) $const_vaultStoreDatabaseDiskSpaceId $databaseName $databaseType $sqlInstanceName $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseDiskSpaceUnhosted)

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

$storageDatabasesContainsStorageDatabaseDiskSpace = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabasesContainsStorageDatabaseDiskSpace']$")
$storageDatabasesContainsStorageDatabaseDiskSpace.Source = $storageDatabases
$storageDatabasesContainsStorageDatabaseDiskSpace.Target = $vaultStoreDatabaseDiskSpace
$discoveryData.AddInstance($storageDatabasesContainsStorageDatabaseDiskSpace)

##########################
# 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 = $vaultStoreDatabaseDiskSpaceUnhosted
$databaseDiskSpaceUnhostedContainsDatabaseDiskSpaceRelDiscovery.Target = $vaultStoreDatabaseDiskSpace
$discoveryData.AddInstance($databaseDiskSpaceUnhostedContainsDatabaseDiskSpaceRelDiscovery)


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

$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseDiskSpaceRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.StorageDatabaseUnhostedContainsStorageDatabaseDiskSpaceUnhosted']$")
$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseDiskSpaceRelDiscovery.Source = $vaultStoreDatabaseUnhosted
$vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseDiskSpaceRelDiscovery.Target = $vaultStoreDatabaseDiskSpaceUnhosted
$discoveryData.AddInstance($vaultStoreDatabaseUnhostedContainsVaultStoreDatabaseDiskSpaceRelDiscovery)

}
}

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

$vaultStoreDatabaseDataFile = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseDataFile']$")
AddDatabaseFileProperties ([REF]$vaultStoreDatabaseDataFile) ($const_evVaultStoreDatabase + $const_space + $const_dataFile) $principalName $databaseName $databaseType $sqlInstanceName $const_vaultStoreDatabaseDataFileId $databaseFileInfo $const_databaseDataFileType $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseDataFile)

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

$vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseDataFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseDataFile']$")
$vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseDataFileRelDiscovery.Source = $vaultStoreDatabaseBackup
$vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseDataFileRelDiscovery.Target = $vaultStoreDatabaseDataFile
$discoveryData.AddInstance($vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseDataFileRelDiscovery)

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

$vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseDataFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseDataFile']$")
$vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseDataFileRelDiscovery.Source = $vaultStoreDatabaseDiskSpace
$vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseDataFileRelDiscovery.Target = $vaultStoreDatabaseDataFile
$discoveryData.AddInstance($vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseDataFileRelDiscovery)
}

}

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

$vaultStoreDatabaseLogFile = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseLogFile']$")
AddDatabaseFileProperties ([REF]$vaultStoreDatabaseLogFile) ($const_evVaultStoreDatabase + $const_space + $const_logFile) $principalName $databaseName $databaseType $sqlInstanceName $const_vaultStoreDatabaseLogFileId $databaseFileInfo $const_databaseLogFileType $logDebugEvent
$discoveryData.AddInstance($vaultStoreDatabaseLogFile)

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

$vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseLogFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseLogFile']$")
$vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseLogFileRelDiscovery.Source = $vaultStoreDatabaseBackup
$vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseLogFileRelDiscovery.Target = $vaultStoreDatabaseLogFile
$discoveryData.AddInstance($vaultStoreDatabaseBackupHostedContainsVaultStoreDatabaseLogFileRelDiscovery)

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

$vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseLogFileRelDiscovery = $discoveryData.CreateRelationshipInstance("$MPElement[Name='Veritas.EnterpriseVault.12.VaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseLogFile']$")
$vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseLogFileRelDiscovery.Source = $vaultStoreDatabaseDiskSpace
$vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseLogFileRelDiscovery.Target = $vaultStoreDatabaseLogFile
$discoveryData.AddInstance($vaultStoreDatabaseDiskSpaceHostedContainsVaultStoreDatabaseLogFileRelDiscovery)
}
}
}
}
}
Catch [system.exception]
{
$message = 'Error discovering Vault Store 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 Vault Store database dependencies has started.'
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

DiscoverVaultStoreDatabaseDependencies

$message = 'Discovery of Vault Store database dependencies is complete.'
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
}
Catch [system.exception]
{
$message = 'Error in discovery of Vault Store database 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>vaultStoreEntryId</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.StorageDatabase.Hosted"]/EntryId$</Value>
</Parameter>
<Parameter>
<Name>storageServiceEntryId</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.StorageDatabase.Hosted"]/StorageServiceEntryId$</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="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>