Mailbox Role Discovery

Microsoft.KnowledgeServices.Exchange.2010.MailboxRoleDiscovery (Discovery)

Element properties:

TargetMicrosoft.KnowledgeServices.Exchange.2010.Server
EnabledTrue
Frequency44079
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

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

Source Code:

<Discovery ID="Microsoft.KnowledgeServices.Exchange.2010.MailboxRoleDiscovery" Enabled="true" Target="MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.Server" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.DatabaseEngine"/>
<DiscoveryClass TypeID="MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>44079</IntervalSeconds>
<SyncTime/>
<ScriptName>ExchangeMailboxServerDiscovery.ps1</ScriptName>
<ScriptBody><Script>

param($SourceId,$ManagedEntityId,$KeyPropertyPrincipalName)

$ErrorActionPreference = "Continue"

# Set up the arguments
$scriptargs = new-object psobject
$scriptargs | add-member NoteProperty "SourceId" $SourceId
$scriptargs | add-member NoteProperty "ManagedEntityId" $ManagedEntityId
$scriptargs | add-member NoteProperty "KeyPropertyInstallPath" $KeyPropertyInstallPath
$scriptargs | add-member NoteProperty "KeyPropertyPrincipalName" $KeyPropertyPrincipalName

# Set up the discovery output
$discoveryoutput = new-object psobject
$discoveryoutput | add-member NoteProperty "Name" ""
$discoveryoutput | add-member NoteProperty "MaximumActiveDatabases" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairLogEnabled" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairLogFileAgeLimitDays" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairLogFileAgeLimitHours" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairLogFileAgeLimitMinutes" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairLogFileAgeLimit" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairLogPath" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairLogSubjectLoggingEnabled" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairMissingItemFixDisabled" ""
$discoveryoutput | add-member NoteProperty "CalendarRepairScheduleSet" ""
$discoveryoutput | add-member NoteProperty "DatabaseAvailabilityGroup" ""
$discoveryoutput | add-member NoteProperty "DatabaseCopyAutoActivationPolicy" ""
$discoveryoutput | add-member NoteProperty "DatabaseCopyAutoActivationPolicyHashCode" ""
$discoveryoutput | add-member NoteProperty "IsExcludedFromProvisioning" ""
$discoveryoutput | add-member NoteProperty "Locale" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogEnabled" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxAgeDays" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxAgeHours" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxAgeMinutes" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxAge" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxDirectorySize" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxDirectorySizeMB" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxDirectorySizeIsUnlimited" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxFileSize" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogMaxFileSizeMB" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogPath" ""
$discoveryoutput | add-member NoteProperty "MessageTrackingLogSubjectLoggingEnabled" ""

#-----------------------------------------------------
# Environment
#-----------------------------------------------------

$ScriptEnv = new-object psobject
$ScriptEnv | Add-Member ScriptMethod "GetMailboxServer" -Value {
Get-MailboxServer -Identity $scriptargs.KeyPropertyPrincipalName -Status
}

#-----------------------------------------------------
# SetValue Function
# Returns value with default if property is null
# Example:
# $DiscoveryOutput.SnapshotLastFullBackup = SetValue -obj ($MailboxDB.SnapshotLastFullBackup) -default $false
#-----------------------------------------------------
function SetValue
{
param($obj,$default,$method)

if($obj -eq $null)
{
return $default
}
elseif($method -ne $null){

return Invoke-Expression "`$obj.$method"
}
else{
return $obj
}
}

#-----------------------------------------------------
# Main Discovery Function
#-----------------------------------------------------
function AdvisorDiscovery($ScriptArgs, $DiscoveryOutput)
{
$MailboxServer = $ScriptEnv.GetMailboxServer()
if ($MailboxServer.Identity -eq $null)
{
$false
return
}

# Exchange 2010 Mailbox Server Properties
$DiscoveryOutput.Name = SetValue -obj ($MailboxServer.Name) -default "0" | Out-String
$DiscoveryOutput.MaximumActiveDatabases = SetValue -obj ($MailboxServer.MaximumActiveDatabases) -default "0"
$DiscoveryOutput.CalendarRepairLogEnabled = SetValue -obj ($MailboxServer.CalendarRepairLogEnabled) -default $true
$DiscoveryOutput.CalendarRepairLogFileAgeLimitDays = SetValue -obj ($MailboxServer.CalendarRepairLogFileAgeLimit.Days) -default 0
$DiscoveryOutput.CalendarRepairLogFileAgeLimitHours = SetValue -obj ($MailboxServer.CalendarRepairLogFileAgeLimit.Hours) -default 0
$DiscoveryOutput.CalendarRepairLogFileAgeLimitMinutes = SetValue -obj ($MailboxServer.CalendarRepairLogFileAgeLimit.Minutes) -default 0
$DiscoveryOutput.CalendarRepairLogFileAgeLimit = SetValue -obj ($MailboxServer.CalendarRepairLogFileAgeLimit) -method "ToString()" -default "0" |Out-String
$DiscoveryOutput.CalendarRepairLogPath = SetValue -obj ($MailboxServer.CalendarRepairLogPath.PathName) -default "0" | Out-String
$DiscoveryOutput.CalendarRepairLogSubjectLoggingEnabled = SetValue -obj ($MailboxServer.CalendarRepairLogSubjectLoggingEnabled) -default $true
$DiscoveryOutput.CalendarRepairMissingItemFixDisabled = SetValue -obj ($MailboxServer.CalendarRepairMissingItemFixDisabled) -default $false
If ($MailboxServer.CalendarRepairSchedule){$DiscoveryOutput.CalendarRepairScheduleSet = $true} Else {$DiscoveryOutput.CalendarRepairScheduleSet = $false} # Bool
$DiscoveryOutput.DatabaseAvailabilityGroup = SetValue -obj ($MailboxServer.DatabaseAvailabilityGroup.Name) -default "0" | Out-String
$DiscoveryOutput.DatabaseCopyAutoActivationPolicy = SetValue -obj ($MailboxServer.DatabaseCopyAutoActivationPolicy) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.DatabaseCopyAutoActivationPolicyHashCode = SetValue -obj ($MailboxServer.DatabaseCopyAutoActivationPolicy) -method "GetHashCode()" -default 0
$DiscoveryOutput.IsExcludedFromProvisioning = SetValue -obj ($MailboxServer.IsExcludedFromProvisioning) -default $false # Bool
$DiscoveryOutput.Locale = SetValue -obj (($MailboxServer.Locale | ForEach {$_.Locale.Name}) -join ", ") -default "0" | Out-String
$DiscoveryOutput.MessageTrackingLogEnabled = SetValue -obj ($MailboxServer.MessageTrackingLogEnabled) -default $true
$DiscoveryOutput.MessageTrackingLogMaxAgeDays = SetValue -obj ($MailboxServer.MessageTrackingLogMaxAge.Days) -default 0
$DiscoveryOutput.MessageTrackingLogMaxAgeHours = SetValue -obj ($MailboxServer.MessageTrackingLogMaxAge.Hours) -default 0
$DiscoveryOutput.MessageTrackingLogMaxAgeMinutes = SetValue -obj ($MailboxServer.MessageTrackingLogMaxAge.Minutes) -default 0
$DiscoveryOutput.MessageTrackingLogMaxAge = SetValue -obj ($MailboxServer.MessageTrackingLogMaxAge) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.MessageTrackingLogMaxDirectorySize = SetValue -obj ($MailboxServer.MessageTrackingLogMaxDirectorySize) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.MessageTrackingLogMaxDirectorySizeMB = SetValue -obj ($MailboxServer.MessageTrackingLogMaxDirectorySize.Value) -method "ToMB()" -default 0
$DiscoveryOutput.MessageTrackingLogMaxDirectorySizeIsUnlimited = SetValue -obj ($MailboxServer.MessageTrackingLogMaxDirectorySize.IsUnlimited) -default $false
$DiscoveryOutput.MessageTrackingLogMaxFileSize = SetValue -obj ($MailboxServer.MessageTrackingLogMaxFileSize) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.MessageTrackingLogMaxFileSizeMB = SetValue -obj ($MailboxServer.MessageTrackingLogMaxFileSize) -method "ToMB()" -default 0
$DiscoveryOutput.MessageTrackingLogPath = SetValue -obj ($MailboxServer.MessageTrackingLogPath.PathName) -default "0" | Out-String
$DiscoveryOutput.MessageTrackingLogSubjectLoggingEnabled = SetValue -obj ($MailboxServer.MessageTrackingLogSubjectLoggingEnabled) -default $true

}

# Attempt to discover mailbox server role. Break if Get-MailboxServer returns false.
$IsMbxRoleDiscovered = AdvisorDiscovery $scriptargs $discoveryoutput
If ($IsMbxRoleDiscovered -eq $false)
{
break
}

# Create a new discovery data packet
$oAPI = new-object -comObject "MOM.ScriptAPI"

$discoverydata = $oAPI.CreateDiscoveryData(0, $scriptargs.SourceId, $scriptargs.ManagedEntityId)
$instance = $discoverydata.CreateClassInstance("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']$")
$instance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Mailbox Role")
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ServerRole']/RoleName$", "Mailbox Role - " + $scriptargs.KeyPropertyPrincipalName)
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $scriptargs.KeyPropertyPrincipalName)

# set the discovery output
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/Name$", $discoveryoutput.Name)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MaximumActiveDatabases$", $discoveryoutput.MaximumActiveDatabases)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairLogEnabled$", $discoveryoutput.CalendarRepairLogEnabled)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairLogFileAgeLimitDays$", $discoveryoutput.CalendarRepairLogFileAgeLimitDays)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairLogFileAgeLimitHours$", $discoveryoutput.CalendarRepairLogFileAgeLimitHours)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairLogFileAgeLimitMinutes$", $discoveryoutput.CalendarRepairLogFileAgeLimitMinutes)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairLogFileAgeLimit$", $discoveryoutput.CalendarRepairLogFileAgeLimit)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairLogPath$", $discoveryoutput.CalendarRepairLogPath)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairLogSubjectLoggingEnabled$", $discoveryoutput.CalendarRepairLogSubjectLoggingEnabled)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairMissingItemFixDisabled$", $discoveryoutput.CalendarRepairMissingItemFixDisabled)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/CalendarRepairScheduleSet$", $discoveryoutput.CalendarRepairScheduleSet)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/DatabaseAvailabilityGroup$", $discoveryoutput.DatabaseAvailabilityGroup)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/DatabaseCopyAutoActivationPolicy$", $discoveryoutput.DatabaseCopyAutoActivationPolicy)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/DatabaseCopyAutoActivationPolicyHashCode$", $discoveryoutput.DatabaseCopyAutoActivationPolicyHashCode)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/IsExcludedFromProvisioning$", $discoveryoutput.IsExcludedFromProvisioning)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/Locale$", $discoveryoutput.Locale)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogEnabled$", $discoveryoutput.MessageTrackingLogEnabled)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxAgeDays$", $discoveryoutput.MessageTrackingLogMaxAgeDays)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxAgeHours$", $discoveryoutput.MessageTrackingLogMaxAgeHours)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxAgeMinutes$", $discoveryoutput.MessageTrackingLogMaxAgeMinutes)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxAge$", $discoveryoutput.MessageTrackingLogMaxAge)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxDirectorySize$", $discoveryoutput.MessageTrackingLogMaxDirectorySize)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxDirectorySizeMB$", $discoveryoutput.MessageTrackingLogMaxDirectorySizeMB)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxDirectorySizeIsUnlimited$", $discoveryoutput.MessageTrackingLogMaxDirectorySizeIsUnlimited)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxFileSize$", $discoveryoutput.MessageTrackingLogMaxFileSize)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogMaxFileSizeMB$", $discoveryoutput.MessageTrackingLogMaxFileSizeMB)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogPath$", $discoveryoutput.MessageTrackingLogPath)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']/MessageTrackingLogSubjectLoggingEnabled$", $discoveryoutput.MessageTrackingLogSubjectLoggingEnabled)

$discoverydata.AddInstance($instance)

$eseinstance = $discoverydata.CreateClassInstance("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.DatabaseEngine']$")
$eseInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Database Engine")
$eseinstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $scriptargs.KeyPropertyPrincipalName)

$discoverydata.AddInstance($eseinstance)

$discoverydata

</Script></ScriptBody>
<SnapIns>
<SnapIn>Microsoft.Exchange.Management.PowerShell.E2010</SnapIn>
</SnapIns>
<Parameters>
<Parameter>
<Name>SourceId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>ManagedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>KeyPropertyPrincipalName</Name>
<Value>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
<StrictErrorHandling>true</StrictErrorHandling>
</DataSource>
</Discovery>