Microsoft.Exchange.15.Custom.MailboxDatabaseforBackup.Discovery (Discovery)
Element properties:
Object Discovery Details:
Member Modules:
Source Code:
<Discovery ID="Microsoft.Exchange.15.Custom.MailboxDatabaseforBackup.Discovery" Enabled="true" Target="Microsoft.Exchange.15.Custom.BackupHost" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.Exchange.15.Custom.MailboxDBforBackup"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoverExc15.MailboxdbforBackup.ps1</ScriptName>
<ScriptBody><Script>
#Set variables
$DISCOVERY_STARTED_INF_ID = 1470;
$DISCOVERY_ENDED_INF_ID = 1471;
$DISCOVERY_PROGRESS_INF_ID = 1472;
$EVENT_SOURCE = 'MicrosoftExchangeDBForackupDiscovery.ps1';
$EVENT_TYPE_ERROR = 1;
$EVENT_TYPE_WARNING = 2;
$EVENT_TYPE_INFORMATION = 4;
$infoOutput = "Exchange Server Mailbox Database for Backup Discovery Script`n" `
$computerPrincipalName = "$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$"
$computerNetbiosName = "$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$"
$sourceId = "$MPElement$"
$managedEntityId = "$Target/Id$"
$verboseLoggingString="True"
$description = "Exchange 2013 Mailbox Database for Backup"
$excservername="$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$"
$api = New-Object -comObject MOM.ScriptAPI
$message=$infoOutput + "Discovery Script started for .`n Server: " + $computerPrincipalName+" ; "+$sourceId+" "+$managedEntityId
$api.LogScriptEvent($EVENT_SOURCE,1400, 4, $message);
Function Load-ExchangeSnapin
{
if (! (Get-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction:SilentlyContinue) )
{
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
}
}
Load-ExchangeSnapin
$discovery = $api.CreateDiscoveryData(0, $sourceId, $managedEntityId)
# Get the ExchangeServer object.
$exchangeServer = Get-ExchangeServer -Identity $computerPrincipalName;
if ($exchangeServer -eq $null)
{
$message='Cannot find exchnage server'
$api.LogScriptEvent($EVENT_SOURCE,1403, 2, $message);
}
$count=0
####create instance for the dag
$mailboxServerInDag = $exchangeServer | where { $_.DatabaseAvailabilityGroup -ne $null; };
$HName="ExcBackup-"+$computerNetbiosName
$DBs=Get-MailboxDatabase -Server $computerPrincipalName -Status|where {$_.IsMailboxDatabase -match 'true'}
foreach($DB in $DBs)
{
IF($DB.Server.Name -eq $exchangeServer.Name)
{
$MailboxDB = $discovery.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']$");
############## Initialize
$version = $DB.ExchangeVersion.Major.ToString()+ '.' + $DB.ExchangeVersion.Minor.ToString() + '.' + $DB.ExchangeVersion.ExchangeBuild.ToString();
$logpath=$null
$edbpath=$null
$count+=1
$IsMountAtStartup = $false;
$IsMounted= $false;
if($DB.Mounted -eq $null)
{
$IsMounted = $false
}
Else
{
$IsMounted=$DB.Mounted
}
if($DB.MountAtStartup)
{
$IsMountAtStartup = $true
}
###############
$logpath=$DB.LogFolderPath.PathName.ToString()
$edbpath=$DB.EdbFilePath.PathName.ToString()
$DBname ="MailboxDB-Backup-"+$DB.Identity.Name.ToString()
$copies=@()
$DB.AllDatabasecopies|?{$copies+=$_.DatabaseName+' - '+$_.ActivationPreference+' /'}
$MailboxDB.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerPrincipalName);
$MailboxDB.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DBName);
#$MailboxDB.AddProperty("$MPElement[Name='Exc15!Microsoft.Exchange.15.Server']/Name$", $excservername);
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.BackupHost']/Name$", $HName);
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/DatabaseName$", $DB.Identity.Name.ToString());
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/ExchangeVersion$", $version);
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/EdbFilePath$", "$edbpath");
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/LogFolderPath$", "$logpath");
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/IsMailboxDatabase$", "true");
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/MountAtStartup$", $IsMountAtStartup);
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/Mounted$", $IsMounted);
$MailboxDB.AddProperty("$MPElement[Name='Microsoft.Exchange.15.Custom.MailboxDBforBackup']/MountedOnServer$", $DB.MountedOnServer);
$message=$DB.Identity.Name.ToString()
$discovery.AddInstance($MailboxDB);
$api.LogScriptEvent($EVENT_SOURCE,1401, 4, $message);
$copies=$null;
}
}
$message="Finishing Discovery"
$api.LogScriptEvent($EVENT_SOURCE,1402, 4, $message);
$api.return($discovery);
$discovery
</Script></ScriptBody>
<TimeoutSeconds>600</TimeoutSeconds>
</DataSource>
</Discovery>