Stale client discovery

Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.StaleClientDiscovery (Discovery)

Element properties:

TargetMicrosoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.DPMServer
EnabledTrue
Frequency43200
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:
Discovered relationships and their attribuets:

Member Modules:

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

Source Code:

<Discovery ID="Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.StaleClientDiscovery" Enabled="true" Target="Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.DPMServer" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.StaleClient"/>
<DiscoveryRelationship TypeID="Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.DPMServerHostsStaleClient"/>
</DiscoveryTypes>
<DataSource ID="StaleClientDiscoveryPowershell" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime>12:00</SyncTime>
<ScriptName>StaleClientDiscovery.ps1</ScriptName>
<ScriptBody><Script>param($sourceType,$sourceId,$managedEntityId,$dpmServerName)

$installPath = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Setup" | ForEach-Object {Get-ItemProperty $_.InstallPath}
$staleClientsFilePath = $installPath.FullName + "temp\StaleClients.log"

#Create and Instantinate SCOM discovery objects
$api = New-Object -comObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData($sourceType, $sourceId, $managedEntityId)

$StaleClientList = get-content $staleClientsFilePath

#Enumerate over each entry and create discovery instances for stale clients
foreach($client in $StaleClientList)
{
if($client)
{
$staleClientName = $client
$protectedBy = $dpmServerName

$staleClientInstance = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.StaleClient']$")
$staleClientInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $dpmServerName)
$staleClientInstance.AddProperty("$MPElement[Name='Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.DPMServer']/DPMServerName$", $dpmServerName)
$staleClientInstance.AddProperty("$MPElement[Name='Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.StaleClient']/StaleClientName$", $staleClientName)
$staleClientInstance.AddProperty("$MPElement[Name='Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.StaleClient']/ProtectedBy$", $dpmServerName)
$discoveryData.AddInstance($staleClientInstance)
}
}

$discoveryData</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>SourceType</Name>
<Value>0</Value>
</Parameter>
<Parameter>
<Name>SourceId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>ManagedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>DPMServerName</Name>
<Value>$Target/Property[Type="Microsoft.Windows.SystemCenterDPM2010.ClientAutoDeployment.DPMServer"]/DPMServerName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>3600</TimeoutSeconds>
</DataSource>
</Discovery>