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

Element properties:

TargetMicrosoft.KnowledgeServices.Exchange.2010.MailboxRole
EnabledTrue
Frequency44086
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.QueryTooComplexDiscovery" Enabled="true" Target="MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>44086</IntervalSeconds>
<SyncTime/>
<ScriptName>ExchangeQueryTooComplexDiscovery.ps1</ScriptName>
<ScriptBody><Script>
param ($SourceId, $ManagedEntityId, $KeyPropertyPrincipalName, $CurrentQueryTooComplex)

# ExchangePSSnapinIsAdded function
#---------------------------------
# Description:
# Checks whether the Application EventLog contains the Event Id 1025 for Query Too Complex
#
#
# Arguments:
# None
#
# Returns:
# Boolean indicating the Error Entry Exists in Eventlog
#
# Example:
# $ErrorExistInLog = $CheckEventLogForQueryTooComplex
#
Function CheckEventLogForQueryTooComplex
{
#Initialize $ErrorExist
$ErrorExist = $false
$yesterday = (get-date) - (new-timespan -day 1)
$ErrorText = get-winevent -ErrorAction SilentlyContinue -FilterHashTable @{LogName='Application'; Data='0x80041606'; StartTime=$yesterday; Id=1025; ProviderName='MSExchangeIS'}

$ErrorExist = $false
if ($ErrorText -contains "0x80041606")
{
$ErrorExist = $true
}
write-Debug $ErrorText -Debug
#Return Error Exists in Eventlog true/false
return $ErrorExist
}

### Main
if ($CurrentyQueryTooComplex -ne $true)
{
$ErrorExistInLog = CheckEventLogForQueryTooComplex
Write-Debug "QueryTooComplexLogged = $ErrorExistInLog" -debug

if ($ErrorExistInLog -eq $true)
{
# Create a new discovery data packet
$oAPI = new-object -comObject "MOM.ScriptAPI"

$discoverydata = $oAPI.CreateDiscoveryData(0, $SourceId, $ManagedEntityId)
$instance = $discoverydata.CreateClassInstance("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']$")
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $KeyPropertyPrincipalName)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole']$/QueryTooComplex", $true)
$discoverydata.AddInstance($instance)

$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/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
<Parameter>
<Name>CurrentQueryTooComplex</Name>
<Value>$Target/Property[Type="MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.MailboxRole"]/QueryTooComplex$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
<StrictErrorHandling>true</StrictErrorHandling>
</DataSource>
</Discovery>