Client Access Role Discovery

Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRoleDiscovery (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.ClientAccessRoleDiscovery" 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.ClientAccessRole"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>44079</IntervalSeconds>
<SyncTime/>
<ScriptName>ExchangeClientAccessServerDiscovery.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 "KeyPropertyPrincipalName" $KeyPropertyPrincipalName

# Set up the discovery output
$DiscoveryOutput = new-object psobject
$DiscoveryOutput | add-member NoteProperty "Name" ""
$DiscoveryOutput | add-member NoteProperty "Fqdn" ""
$DiscoveryOutput | add-member NoteProperty "OutlookAnywhereEnabled" ""
$DiscoveryOutput | add-member NoteProperty "AutoDiscoverServiceCN" ""
$DiscoveryOutput | add-member NoteProperty "AutoDiscoverServiceClassName" ""
$DiscoveryOutput | add-member NoteProperty "AutoDiscoverServiceInternalUri" ""
$DiscoveryOutput | add-member NoteProperty "AutoDiscoverServiceGuid" ""
$DiscoveryOutput | add-member NoteProperty "AutoDiscoverSiteScope" ""
$DiscoveryOutput | add-member NoteProperty "AlternateServiceAccountConfiguration" ""
$DiscoveryOutput | add-member NoteProperty "IrmLogEnabled" ""
$DiscoveryOutput | add-member NoteProperty "IrmLogMaxAge" ""
$DiscoveryOutput | add-member NoteProperty "IrmLogMaxDirectorySize" ""
$DiscoveryOutput | add-member NoteProperty "IrmLogMaxDirectorySizeMB" ""
$DiscoveryOutput | add-member NoteProperty "IrmLogMaxFileSize" ""
$DiscoveryOutput | add-member NoteProperty "IrmLogMaxFileSizeMB" ""
$DiscoveryOutput | add-member NoteProperty "IrmLogPath" ""
$DiscoveryOutput | add-member NoteProperty "ExchangeVersion" ""
$DiscoveryOutput | add-member NoteProperty "WhenChangedUTC" ""
$DiscoveryOutput | add-member NoteProperty "WhenCreatedUTC" ""

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

$ScriptEnv = new-object psobject
$ScriptEnv | Add-Member ScriptMethod "GetClientAccessServer" -Value {
Get-ClientAccessServer -Identity $scriptargs.KeyPropertyPrincipalName -IncludeAlternateServiceAccountCredentialStatus
}

$ScriptEnv | Add-Member ScriptMethod "GetRPCProxyRegKey" -Value {
If (Test-Path HKLM:\SOFTWARE\Microsoft\Rpc\RpcProxy)
{
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Rpc\RpcProxy
}
}

#-----------------------------------------------------
# SetValue Function
# Returns value with default if property is null
# Example:
# $DiscoveryOutput.SnapshotLastFullBackup = SetValue -obj ($CASServer.OutlookAnywhereEnabled) -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)
{
$CASServer = $ScriptEnv.GetClientAccessServer()
If ($CASServer.Identity -eq $null)
{
$false
return
}

$RPCProxyReg = $ScriptEnv.GetRPCProxyRegKey()

# Exchange 2010 Client Access Server Properties
$DiscoveryOutput.Name = SetValue -obj ($CASServer.Name) -default "0" | Out-String
$DiscoveryOutput.Fqdn = SetValue -obj ($CASServer.Fqdn) -default "0" | Out-String
$DiscoveryOutput.OutlookAnywhereEnabled = SetValue -obj ($CASServer.OutlookAnywhereEnabled) -default $false
$DiscoveryOutput.AutoDiscoverServiceCN = SetValue -obj ($CASServer.AutoDiscoverServiceCN) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.AutoDiscoverServiceClassName = SetValue -obj ($CASServer.AutoDiscoverServiceClassName) | Out-String
$DiscoveryOutput.AutoDiscoverServiceInternalUri = SetValue -obj ($CASServer.AutoDiscoverServiceInternalUri.AbsoluteUri) | Out-String
$DiscoveryOutput.AutoDiscoverServiceGuid = SetValue -obj ($CASServer.AutoDiscoverServiceGuid) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.AutoDiscoverSiteScope = SetValue -obj ($CASServer.AutoDiscoverSiteScope) | Out-String
$DiscoveryOutput.AlternateServiceAccountConfiguration = (SetValue -obj ($CASServer.AlternateServiceAccountConfiguration) -method "ToString()" -default "0") -replace "`n","; " | Out-String
$DiscoveryOutput.IrmLogEnabled = SetValue -obj ($CASServer.IrmLogEnabled) -default $false
$DiscoveryOutput.IrmLogMaxAge = SetValue -obj ($CASServer.IrmLogMaxAge) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.IrmLogMaxDirectorySize = SetValue -obj ($CASServer.IrmLogMaxDirectorySize) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.IrmLogMaxDirectorySizeMB = SetValue -obj ($CASServer.IrmLogMaxDirectorySize.Value) -method "ToMB()" -default 0
$DiscoveryOutput.IrmLogMaxFileSize = SetValue -obj ($CASServer.IrmLogMaxFileSize) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.IrmLogMaxFileSizeMB = SetValue -obj ($CASServer.IrmLogMaxFileSize) -method "ToMB()" -default 0
$DiscoveryOutput.IrmLogPath = SetValue -obj ($CASServer.IrmLogPath.PathName) -default "0" | Out-String
$DiscoveryOutput.ExchangeVersion = SetValue -obj ($CASServer.ExchangeVersion) -method "ToString()" -default "0" | Out-String
$DiscoveryOutput.WhenChangedUTC = SetValue -obj ($CASServer.WhenChangedUTC)
$DiscoveryOutput.WhenCreatedUTC = SetValue -obj ($CASServer.WhenCreatedUTC)
$DiscoveryOutput.RPCProxyEnabled = SetValue -obj ([System.Convert]::ToBoolean($RPCProxyReg.Enabled)) -default $false
$DiscoveryOutput.RPCProxyValidPorts = SetValue -obj ($RPCProxyReg.ValidPorts) -default "0" | Out-String
}

# Attempt to discover CAS role. Break if Get-ClientAccessServer returns false.
$IsCASDiscovered = AdvisorDiscovery $scriptargs $discoveryoutput
If ($IsCASDiscovered -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.ClientAccessRole']$")
$instance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Client Access Role")
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ServerRole']/RoleName$", "Client Access 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.ClientAccessRole']/Name$", $discoveryoutput.Name)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/Fqdn$", $discoveryoutput.Fqdn)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/OutlookAnywhereEnabled$", $discoveryoutput.OutlookAnywhereEnabled)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/AutoDiscoverServiceCN$", $discoveryoutput.AutoDiscoverServiceCN)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/AutoDiscoverServiceClassName$", $discoveryoutput.AutoDiscoverServiceClassName)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/AutoDiscoverServiceInternalUri$", $discoveryoutput.AutoDiscoverServiceInternalUri)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/AutoDiscoverServiceGuid$", $discoveryoutput.AutoDiscoverServiceGuid)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/AutoDiscoverSiteScope$", $discoveryoutput.AutoDiscoverSiteScope)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/AlternateServiceAccountConfiguration$", $discoveryoutput.AlternateServiceAccountConfiguration)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/IrmLogEnabled$", $discoveryoutput.IrmLogEnabled)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/IrmLogMaxAge$", $discoveryoutput.IrmLogMaxAge)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/IrmLogMaxDirectorySize$", $discoveryoutput.IrmLogMaxDirectorySize)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/IrmLogMaxDirectorySizeMB$", $discoveryoutput.IrmLogMaxDirectorySizeMB)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/IrmLogMaxFileSize$", $discoveryoutput.IrmLogMaxFileSize)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/IrmLogMaxFileSizeMB$", $discoveryoutput.IrmLogMaxFileSizeMB)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/IrmLogPath$", $discoveryoutput.IrmLogPath)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/ExchangeVersion$", $discoveryoutput.ExchangeVersion)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/WhenChangedUTC$", $discoveryoutput.WhenChangedUTC)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/WhenCreatedUTC$", $discoveryoutput.WhenCreatedUTC)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/RPCProxyEnabled$", $discoveryoutput.RPCProxyEnabled)
$instance.AddProperty("$MPElement[Name='MKSE2K10Lib!Microsoft.KnowledgeServices.Exchange.2010.ClientAccessRole']/RPCProxyValidPorts$", $discoveryoutput.RPCProxyValidPorts)

$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/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
<StrictErrorHandling>true</StrictErrorHandling>
</DataSource>
</Discovery>