Microsoft.SystemCenter.WindowsComputer.Telemetry.Discovery (Discovery)

Element properties:

TargetMicrosoft.Windows.Computer
EnabledTrue
Frequency86400
RemotableFalse
CommentDiscover Windows Computer Telemetry Properties

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

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

Source Code:

<Discovery ID="Microsoft.SystemCenter.WindowsComputer.Telemetry.Discovery" Comment="Discover Windows Computer Telemetry Properties" Enabled="true" Target="Windows!Microsoft.Windows.Computer" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.SystemCenter.WindowsComputer.Telemetry">
<Property PropertyID="HostType"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="PropertyDiscovery" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoverWindowsComputerTelemetryProperties.ps1</ScriptName>
<ScriptBody><Script>#-------------------------------------------------------------------------------
# DiscoverWindowsComputerTelemetryProperties.ps1
#
# Script discovers the Machine Host Name
#-------------------------------------------------------------------------------

param($SourceType, $SourceId, $ManagedEntityId, $ComputerIdentity)

$strHostType = $null

#-----------------------------------------------------------
# Adds the property to the instance if the value is non-$null
#-----------------------------------------------------------
function AddClassProperty($oInstance, $strProperty, $strValue)
{
if ($null -ne $strValue) {
$oInstance.AddProperty($strProperty, $strValue);
}
}

# Need to retrieve these properties

function gethost($ComputerIdentity) {

if ([string]::IsNullOrWhitespace($ComputerIdentity)){
return "Unknown"
}

try {
$azureAssetTag = "7783-7084-3265-9085-8269-3286-77"
$azureStackAssetTag = "7783-7084-3265-9085-8269-3283-84"
$assetTag = (Get-WmiObject Win32_SystemEnclosure -ComputerName $ComputerIdentity).SMBiosAssetTag

if ($assetTag -eq $azureAssetTag) {
return "Azure"
}
if ($assetTag -eq $azureStackAssetTag) {
return "Azure Stack"
}

}
catch {
return "Unknown"
}
try {
$uuid = (Get-WmiObject -Class Win32_ComputerSystemProduct -ComputerName $ComputerIdentity).UUID

if ($uuid.length -ge 8) {

$ec2 = $uuid.IndexOf("EC2")
$ec = $uuid.IndexOf("EC")
$indexVal = $uuid.Substring(4,1)
if ($ec2 -eq 0){
return "AWS"
}
elseif ($ec -eq 6 -and $indexVal -eq "2"){
return "AWS"
}
}
}
catch {
return "Unknown"
}
try{
$ComputerSystemInfo = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $ComputerIdentity
$Manufacturer = $ComputerSystemInfo.Manufacturer
$Model = $ComputerSystemInfo.Model
$isHypervisor = $ComputerSystemInfo.HypervisorPresent

if($isHypervisor){

if ($Model -eq "VMware Virtual Platform"){
return "VMware"
}
elseif (($Model -eq "Virtual Machine") -and ($Manufacturer -eq "Microsoft Corporation")){
$version = (Get-WmiObject -Class Win32_BIOS -ComputerName $ComputerIdentity).Version

if($version.StartsWith("VRTUAL") -Or $version.StartsWith("A M I")){
return "HyperV"
}
}

}
}
catch{
return "Unknown"
}

return "Others"
}

$oAPI = new-object -comobject "MOM.ScriptAPI"
$SCRIPT_NAME = "DiscoverWindowsComputerTelemetryProperties.ps1";
$oDiscovery = $oAPI.CreateDiscoveryData($SourceType, $SourceId, $ManagedEntityId);

$strHostType = gethost($ComputerIdentity)

$oInstance = $oDiscovery.CreateClassInstance("$MPElement[Name='Microsoft.SystemCenter.WindowsComputer.Telemetry']$");
AddClassProperty $oInstance "$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$" $ComputerIdentity
AddClassProperty $oInstance "$MPElement[Name='System!System.Entity']/DisplayName$" $ComputerIdentity
AddClassProperty $oInstance "$MPElement[Name='Microsoft.SystemCenter.WindowsComputer.Telemetry']/HostType$" $strHostType

$oDiscovery.AddInstance($oInstance);
$oDiscovery</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>ComputerIdentity</Name>
<Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>