RemoteAccessServerPSDiscovery

Microsoft.Windows.RemoteAccess.2012.RemoteAccessServerPSDiscovery (Discovery)

Element properties:

TargetMicrosoft.Windows.RemoteAccess.2012.Class.RemoteAccessServer.Seed
EnabledTrue
Frequency21600
RemotableFalse

Object Discovery Details:

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

Member Modules:

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

Source Code:

<Discovery ID="Microsoft.Windows.RemoteAccess.2012.RemoteAccessServerPSDiscovery" Enabled="true" Target="Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessServer.Seed" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessServer">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessSite">
<Property TypeID="Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessSite" PropertyID="ApplicationName"/>
<Property TypeID="Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessSite" PropertyID="ContainerName"/>
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.MicrosoftRemoteAccess">
<Property TypeID="Microsoft.Windows.RemoteAccess.2012.Class.MicrosoftRemoteAccess" PropertyID="ApplicationName"/>
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.VPNServer">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.DirectAccessServer">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.Teredo">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.6to4">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.DNS">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.DNS64">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.DomainController">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.IPSec">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.ManagementServers">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.NAT64">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.NetworkAdapters">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.NetworkLocationServer">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.NetworkSecurity">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.Services">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.ISATAP">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.Kerberos">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.Otp">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Windows.RemoteAccess.2012.Class.HighAvailability">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryRelationship TypeID="Windows!Microsoft.Windows.ComputerHostsComputerRole"/>
<DiscoveryRelationship TypeID="RemoteAccessSite.Contains.RemoteAccessServer"/>
<DiscoveryRelationship TypeID="MicrosoftRemoteAccess.Contains.RemoteAccessSite"/>
<DiscoveryRelationship TypeID="RemoteAccessServer.Hosts.VPNServer"/>
<DiscoveryRelationship TypeID="RemoteAccessServer.Hosts.DirectAccessServer"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.Teredo"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.6to4"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.DNS"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.DNS64"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.DomainController"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.IPSec"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.ManagementServers"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.NAT64"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.NetworkAdapters"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.NetworkLocationServer"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.NetworkSecurity"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.Services"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.Otp"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.Kerberos"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.ISATAP"/>
<DiscoveryRelationship TypeID="DirectAccessServer.Hosts.HighAvailability"/>
</DiscoveryTypes>
<DataSource ID="PSDiscoveryProvider" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>21600</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoveryScript.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId,$managedEntityId,$computerName)
$EventLog = new-object System.Diagnostics.EventLog('Application')
$EventLog.MachineName = "."
$EventLog.Source = "RemoteAccessServerDiscovery"
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Starting Discovery at (" + $computerName + ")" )

$api = new-object -comObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $sourceId, $managedEntityId)

$enterpriseName = "Microsoft RemoteAccess"


$ab = [Security.Principal.WindowsIdentity]::GetCurrent()

$EventLog.WriteEntry("[RemoteAccessServerDiscovery] identity is " + $ab.Name )

# if( $myRRAS -ne $null ){
try{
$daMultisite = $null

$myRRAS = get-remoteaccess

$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Creating raServer Object ( " + $computerName + ")")
$raServer = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessServer']$")
$raServer.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$raServer.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "RemoteAccessServer (" + $computerName + ")")
$discoveryData.AddInstance($raServer)

try{

$daMultisite = Get-DAMultisite
$enterpriseName = $daMultisite.EnterpriseName

$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Creating an Enterprize Object, Enterprise Name (" + $enterpriseName + ")")
$raApp = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.MicrosoftRemoteAccess']$")
$raApp.AddProperty("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.MicrosoftRemoteAccess']/ApplicationName$", $enterpriseName)
$raApp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $enterpriseName)
$discoveryData.AddInstance($raApp)

$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Creating site " + $myRRAS.EntryPointName)
$site = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessSite']$")
$site.AddProperty("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessSite']/ApplicationName$", $enterpriseName)
$site.AddProperty("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.RemoteAccessSite']/ContainerName$", $myRRAS.EntryPointName)
$site.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $myRRAS.EntryPointName)
$discoveryData.AddInstance($site)


$rel_site_server = $discoveryData.CreateRelationshipInstance("$MPElement[Name='RemoteAccessSite.Contains.RemoteAccessServer']$")
$rel_site_server.Source = $site
$rel_site_server.Target = $raServer
$discoveryData.AddInstance($rel_site_server)


$rel_MSRRAS_Site = $discoveryData.CreateRelationshipInstance("$MPElement[Name='MicrosoftRemoteAccess.Contains.RemoteAccessSite']$")
$rel_MSRRAS_Site.Source = $raApp
$rel_MSRRAS_Site.Target = $site
$discoveryData.AddInstance($rel_MSRRAS_Site)
}catch{
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Multisite is not enabled at (" + $computerName + ")" )
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Multisite Error: " + $_)
}

if ( $myRRAS.VpnStatus -eq "Installed" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] VPN Server Discovered")
$vpn = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.VPNServer']$")
$vpn.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "VPNServer (" + $computerName + ")")
$vpn.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$discoveryData.AddInstance($vpn)

$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Creating relationship (RemoteAccessServer.Hosts.VPNServer)")
$rel_RasServer_VPN = $discoveryData.CreateRelationshipInstance("$MPElement[Name='RemoteAccessServer.Hosts.VPNServer']$")
$rel_RasServer_VPN.Source = $raServer
$rel_RasServer_VPN.Target = $vpn
$discoveryData.AddInstance($rel_RasServer_VPN)
}

if ( $myRRAS.DAStatus -eq "Installed" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] DirectAccess Server Discovered")
$daserver = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.DirectAccessServer']$")
$daserver.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "DirectAccessServer (" + $computerName + ")")
$daserver.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$discoveryData.AddInstance($daserver)

$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Creating relationship (RemoteAccessServer.Hosts.DirectAccessServer)")
$rel_RasServer_DAServer = $discoveryData.CreateRelationshipInstance("$MPElement[Name='RemoteAccessServer.Hosts.DirectAccessServer']$")
$rel_RasServer_DAServer.Source = $raServer
$rel_RasServer_DAServer.Target = $daserver
$discoveryData.AddInstance($rel_RasServer_DAServer)

$RemoteAccessHealth = get-RemoteAccessHealth

$TeredoHealth = $RemoteAccessHealth | where Component -eq "Teredo"
if ( $TeredoHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Teredo discovered")
$teredo = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.Teredo']$")
$teredo.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$teredo.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Teredo (" + $computerName + ")")
$discoveryData.AddInstance($teredo)

$daHostsTeredo = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.Teredo']$")
$daHostsTeredo.Source = $daserver
$daHostsTeredo.Target = $teredo
$discoveryData.AddInstance($daHostsTeredo)
}

$IPHTTPSHealth = $RemoteAccessHealth | where Component -eq "IP-Https"
if ( $IPHTTPSHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] IPHTTPS discovered")
$iphttps = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.IPHTTPS']$")
$iphttps.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$iphttps.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "IP-Https (" + $computerName + ")")
$discoveryData.AddInstance($iphttps)

$daHostsIPHttps = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.IPHTTPS']$")
$daHostsIPHttps.Source = $daserver
$daHostsIPHttps.Target = $iphttps
$discoveryData.AddInstance($daHostsIPHttps)
}

$6to4Health = $RemoteAccessHealth | where Component -eq "6to4"
if ( $6to4Health.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] 6to4 discovered")
$6to4 = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.6to4']$")
$6to4.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$6to4.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "6to4 (" + $computerName + ")")
$discoveryData.AddInstance($6to4)

$daHosts6to4 = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.6to4']$")
$daHosts6to4.Source = $daserver
$daHosts6to4.Target = $6to4
$discoveryData.AddInstance($daHosts6to4)
}

$DNSHealth = $RemoteAccessHealth | where Component -eq "Dns"
if ( $DNSHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] DNS discovered")
$dnssvr = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.DNS']$")
$dnssvr.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$dnssvr.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "DNS (" + $computerName + ")")
$discoveryData.AddInstance($dnssvr)

$daHostsdns = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.DNS']$")
$daHostsdns.Source = $daserver
$daHostsdns.Target = $dnssvr
$discoveryData.AddInstance($daHostsdns)
}

$DNS64Health = $RemoteAccessHealth | where Component -eq "Dns64"
if ( $DNS64Health.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] DNS64 discovered")
$dns64svr = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.DNS64']$")
$dns64svr.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$dns64svr.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "DNS64 (" + $computerName + ")")
$discoveryData.AddInstance($dns64svr)

$daHostsdns64 = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.DNS64']$")
$daHostsdns64.Source = $daserver
$daHostsdns64.Target = $dns64svr
$discoveryData.AddInstance($daHostsdns64)
}

$DCHealth = $RemoteAccessHealth | where Component -eq "Domain Controller"
if ( $DCHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] DC discovered")
$dcsvr = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.DomainController']$")
$dcsvr.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$dcsvr.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "DC (" + $computerName + ")")
$discoveryData.AddInstance($dcsvr)

$daHostsdc = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.DomainController']$")
$daHostsdc.Source = $daserver
$daHostsdc.Target = $dcsvr
$discoveryData.AddInstance($daHostsdc)
}

$IPSecHealth = $RemoteAccessHealth | where Component -eq "IPsec"
if ( $IPSecHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] IPSec discovered")
$IPSec = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.IPSec']$")
$IPSec.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$IPSec.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "IPSec (" + $computerName + ")")
$discoveryData.AddInstance($IPSec)

$daHostsIPSec = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.IPSec']$")
$daHostsIPSec.Source = $daserver
$daHostsIPSec.Target = $IPSec
$discoveryData.AddInstance($daHostsIPSec)
}

$MgmtSvrHealth = $RemoteAccessHealth | where Component -eq "Management Servers"
if ( $MgmtSvrHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] ManagementServers discovered")
$MgmtSvr = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.ManagementServers']$")
$MgmtSvr.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$MgmtSvr.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "ManagementServers (" + $computerName + ")")
$discoveryData.AddInstance($MgmtSvr)

$daHostsMgmtSvr = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.ManagementServers']$")
$daHostsMgmtSvr.Source = $daserver
$daHostsMgmtSvr.Target = $MgmtSvr
$discoveryData.AddInstance($daHostsMgmtSvr)
}

$NAT64Health = $RemoteAccessHealth | where Component -eq "Nat64"
if ( $NAT64Health.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Nat64 discovered")
$Nat64 = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.NAT64']$")
$Nat64.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$Nat64.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "NAT64 (" + $computerName + ")")
$discoveryData.AddInstance($Nat64)

$daHostsNat64 = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.NAT64']$")
$daHostsNat64.Source = $daserver
$daHostsNat64.Target = $Nat64
$discoveryData.AddInstance($daHostsNat64)
}

$NetworkHealth = $RemoteAccessHealth | where Component -eq "Network Adapters"
if ( $NetworkHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Network Adapters discovered")
$NetworkAdapters = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.NetworkAdapters']$")
$NetworkAdapters.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$NetworkAdapters.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "NetworkAdapters (" + $computerName + ")")
$discoveryData.AddInstance($NetworkAdapters)

$daHostsNetwork = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.NetworkAdapters']$")
$daHostsNetwork.Source = $daserver
$daHostsNetwork.Target = $NetworkAdapters
$discoveryData.AddInstance($daHostsNetwork)
}

$NLSHealth = $RemoteAccessHealth | where Component -eq "Network Location Server"
if ( $NLSHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] NLS discovered")
$NLS = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.NetworkLocationServer']$")
$NLS.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$NLS.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "NetworkLocationServer (" + $computerName + ")")
$discoveryData.AddInstance($NLS)

$daHostsNLS = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.NetworkLocationServer']$")
$daHostsNLS.Source = $daserver
$daHostsNLS.Target = $NLS
$discoveryData.AddInstance($daHostsNLS)
}

$NetSecHealth = $RemoteAccessHealth | where Component -eq "Network Security"
if ( $NetSecHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] NetSec discovered")
$NetSec = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.NetworkSecurity']$")
$NetSec.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$NetSec.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "NetworkSecurity (" + $computerName + ")")
$discoveryData.AddInstance($NetSec)

$daHostsNetSec = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.NetworkSecurity']$")
$daHostsNetSec.Source = $daserver
$daHostsNetSec.Target = $NetSec
$discoveryData.AddInstance($daHostsNetSec)
}

$ServicesHealth = $RemoteAccessHealth | where Component -eq "Services"
if ( $ServicesHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Services discovered")
$Services = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.Services']$")
$Services.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$Services.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Services (" + $computerName + ")")
$discoveryData.AddInstance($Services)

$daHostsServices = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.Services']$")
$daHostsServices.Source = $daserver
$daHostsServices.Target = $Services
$discoveryData.AddInstance($daHostsServices)
}

$ISATAPHealth = $RemoteAccessHealth | where Component -eq "Isatap"
if ( $ISATAPHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Isatap discovered")
$Isatap = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.ISATAP']$")
$Isatap.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$Isatap.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Isatap (" + $computerName + ")")
$discoveryData.AddInstance($Isatap)

$daHostsIsatap = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.ISATAP']$")
$daHostsIsatap.Source = $daserver
$daHostsIsatap.Target = $Isatap
$discoveryData.AddInstance($daHostsIsatap)
}

$KerberosHealth = $RemoteAccessHealth | where Component -eq "Kerberos"
if ( $KerberosHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Kerberos discovered")
$Kerberos = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.Kerberos']$")
$Kerberos.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$Kerberos.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Kerberos (" + $computerName + ")")
$discoveryData.AddInstance($Kerberos)

$daHostsKerberos = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.Kerberos']$")
$daHostsKerberos.Source = $daserver
$daHostsKerberos.Target = $Kerberos
$discoveryData.AddInstance($daHostsKerberos)
}

$OtpHealth = $RemoteAccessHealth | where Component -eq "Otp"
if ( $OtpHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Otp discovered")
$Otp = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.Otp']$")
$Otp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$Otp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Otp (" + $computerName + ")")
$discoveryData.AddInstance($Otp)

$daHostsOtp = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.Otp']$")
$daHostsOtp.Source = $daserver
$daHostsOtp.Target = $Otp
$discoveryData.AddInstance($daHostsOtp)
}

$HAHealth = $RemoteAccessHealth | where Component -eq "High Availability"
if ( $HAHealth.HealthState -ne "Disabled" ){
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] High Availability discovered")
$HA = $discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.RemoteAccess.2012.Class.HighAvailability']$")
$HA.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$HA.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "HighAvailability (" + $computerName + ")")
$discoveryData.AddInstance($HA)

$daHostsHA = $discoveryData.CreateRelationshipInstance("$MPElement[Name='DirectAccessServer.Hosts.HighAvailability']$")
$daHostsHA.Source = $daserver
$daHostsHA.Target = $HA
$discoveryData.AddInstance($daHostsHA)
}
}
}catch{
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Error occured while running Discovery at (" + $computerName + ")" )
$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Error Data: " + $_)
}

$EventLog.WriteEntry("[RemoteAccessServerDiscovery] Discovery Complete" )
$discoveryData
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>sourceID</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityID</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>computerName</Name>
<Value>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>600</TimeoutSeconds>
</DataSource>
</Discovery>