Discover Server.Common dependencies

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

Script for discovering Server.Common dependencies.

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

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

Overrideable Parameters:

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

Source Code:

<DataSourceModuleType ID="Veritas.EnterpriseVault.12.ServerCommonDependencies.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="ServerCommonDependenciesDiscoveryDS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>VeritasEnterpriseVaultDiscoverServerCommonDependencies.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId, $managedEntityId, $commonId, $computerEntryId, $serverName, $siteName, $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 = 'ServerCommonDependenciesDiscovery.ps1'

Function DiscoverServerCommonDependencies
{
$functionName = "Function: DiscoverServerCommonDependencies"

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

# Create Server.CommonDiskSpace object
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Server.CommonDiskSpace object." + "`nProperties:`n-----------" + "`nDisplayName: Common Disk Space" + "`nPrincipalName: " + $principalName + "`nComputerEntryID: " + $computerEntryId + "`nServer.Common/Id: " + $commonId + "`nDiskSpace/Id: Common Disk Space"
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$serverCommonDiskSpace = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Server.CommonDiskSpace']$")
$serverCommonDiskSpace.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $const_commonDiskSpaceId)
$serverCommonDiskSpace.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$serverCommonDiskSpace.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server']/EntryId$", $computerEntryId)
$serverCommonDiskSpace.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server.Common']/Id$", $commonId)
$serverCommonDiskSpace.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.DiskSpace']/Id$", $const_commonDiskSpaceId)
$discoveryData.AddInstance($serverCommonDiskSpace)

# Create Server.CommonConnectivity object
$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 $commonId $const_serverCommonConnectivityId
$discoveryData.AddInstance($serverCommonConnectivity)

$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.Server.CommonServices object." + "`nProperties:`n-----------" + "`nDisplayName: Server Common Services" + "`nPrincipalName: " + $principalName + "`nComputerEntryID: " + $computerEntryId + "`nServer.Common/Id: " + $commonId + "`nCommonServices/Id: Server Common Services"
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

# Create CommonServices object
$serverCommonServices = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Server.CommonServices']$")
$serverCommonServices.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $const_commonServicesId)
$serverCommonServices.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $principalName)
$serverCommonServices.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server']/EntryId$", $computerEntryId)
$serverCommonServices.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server.Common']/Id$", $commonId)
$serverCommonServices.AddProperty("$MPElement[Name='Veritas.EnterpriseVault.12.Server.CommonServices']/Id$", $const_commonServicesId)
$discoveryData.AddInstance($serverCommonServices)

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

# Find EV Common Databases
Try
{
$message = $functionName + "`nInvoking cmdlet: Get-EVDatabase."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
$evDatabases = Get-EVDatabase -errorvariable err
HandleError $err

foreach ($evDatabase in $evDatabases)
{
switch ($evDatabase.Type)
{
([Symantec.EnterpriseVault.PowerShell.Core.EVDatabaseType]::Directory)
{
# Create DirectoryDatabase.Hosted, DirectoryDatabase.Unhosted and Backup.DirectoryDatabase.Unhosted objects
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.DirectoryDatabase.Hosted, Veritas.EnterpriseVault.12.DirectoryDatabase.Unhosted and Veritas.EnterpriseVault.12.Backup.DirectoryDatabase.Unhosted objects."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$directoryDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.DirectoryDatabase.Unhosted']$")
AddDatabaseUnhostedProperties ([REF]$directoryDatabaseUnhosted) $evDatabase $const_directoryDatabaseType $siteName $logDebugEvent
$discoveryData.AddInstance($directoryDatabaseUnhosted)

$backupDirectoryDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.DirectoryDatabase.Unhosted']$")
AddBackupDatabaseUnhostedProperties ([REF]$backupDirectoryDatabaseUnhosted) $evDatabase $const_directoryDatabaseType $siteName $logDebugEvent
$discoveryData.AddInstance($backupDirectoryDatabaseUnhosted)

$directoryDatabaseHosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.DirectoryDatabase.Hosted']$")
AddDatabaseHostedProperties ([REF]$directoryDatabaseHosted) $principalName $evDatabase $const_directoryDatabaseType $computerEntryId $serverName $siteName $logDebugEvent
$discoveryData.AddInstance($directoryDatabaseHosted)
}
([Symantec.EnterpriseVault.PowerShell.Core.EVDatabaseType]::Audit)
{
# Create AuditDatabase.Hosted, AuditDatabase.Unhosted and Backup.AuditDatabase.Unhosted objects
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.AuditDatabase.Hosted, Veritas.EnterpriseVault.12.AuditDatabase.Unhosted and Veritas.EnterpriseVault.12.Backup.AuditDatabase.Unhosted objects."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$auditDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabase.Unhosted']$")
AddDatabaseUnhostedProperties ([REF]$auditDatabaseUnhosted) $evDatabase $const_auditDatabaseType $siteName $logDebugEvent
$discoveryData.AddInstance($auditDatabaseUnhosted)

$backupAuditDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.AuditDatabase.Unhosted']$")
AddBackupDatabaseUnhostedProperties ([REF]$backupAuditDatabaseUnhosted) $evDatabase $const_auditDatabaseType $siteName $logDebugEvent
$discoveryData.AddInstance($backupAuditDatabaseUnhosted)

$auditDatabaseHosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.AuditDatabase.Hosted']$")
AddDatabaseHostedProperties ([REF]$auditDatabaseHosted) $principalName $evDatabase $const_auditDatabaseType $computerEntryId $serverName $siteName $logDebugEvent
$discoveryData.AddInstance($auditDatabaseHosted)
}
([Symantec.EnterpriseVault.PowerShell.Core.EVDatabaseType]::Monitoring)
{
# Create MonitoringDatabase.Hosted, MonitoringDatabase.Unhosted and Backup.MonitoringDatabase.Unhosted objects
$message = $functionName + "`nCreating Veritas.EnterpriseVault.12.MonitoringDatabase.Hosted, Veritas.EnterpriseVault.12.MonitoringDatabase.Unhosted and Veritas.EnterpriseVault.12.Backup.MonitoringDatabase.Unhosted objects."
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent

$monitoringDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabase.Unhosted']$")
AddDatabaseUnhostedProperties ([REF]$monitoringDatabaseUnhosted) $evDatabase $const_monitoringDatabaseType $siteName $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseUnhosted)

$backupMonitoringDatabaseUnhosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.Backup.MonitoringDatabase.Unhosted']$")
AddBackupDatabaseUnhostedProperties ([REF]$backupMonitoringDatabaseUnhosted) $evDatabase $const_monitoringDatabaseType $siteName $logDebugEvent
$discoveryData.AddInstance($backupMonitoringDatabaseUnhosted)

$monitoringDatabaseHosted = $discoveryData.CreateClassInstance("$MPElement[Name='Veritas.EnterpriseVault.12.MonitoringDatabase.Hosted']$")
AddDatabaseHostedProperties ([REF]$monitoringDatabaseHosted) $principalName $evDatabase $const_monitoringDatabaseType $computerEntryId $serverName $siteName $logDebugEvent
$discoveryData.AddInstance($monitoringDatabaseHosted)
}
}
}
}
Catch [system.exception]
{
$message = 'Error discovering common databases.' + "`nError: " + $_
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_ERROR true
}

$discoveryData
}

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

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

DiscoverServerCommonDependencies

$message = 'Discovery of Server.Common dependencies is complete.'
Log-DebugEvent $SCRIPT_NAME $message 20 $EVENT_LEVEL_INFO $logDebugEvent
}
Catch [system.exception]
{
$message = 'Error in discovery of Server.Common 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>commonId</Name>
<Value>$Target/Property[Type="Veritas.EnterpriseVault.12.Server.Common"]/Id$</Value>
</Parameter>
<Parameter>
<Name>computerEntryId</Name>
<Value>$Target/Host/Property[Type="Veritas.EnterpriseVault.12.Server"]/EntryId$</Value>
</Parameter>
<Parameter>
<Name>serverName</Name>
<Value>$Target/Host/Property[Type="Veritas.EnterpriseVault.12.Server"]/Name$</Value>
</Parameter>
<Parameter>
<Name>siteName</Name>
<Value>$Target/Host/Property[Type="Veritas.EnterpriseVault.12.Server"]/SiteName$</Value>
</Parameter>
<Parameter>
<Name>principalName</Name>
<Value>$Target/Host/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="ServerCommonDependenciesDiscoveryDS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>