Microsoft.SystemCenter.WindowsComputer.Telemetry.Discovery (Discovery)
Element properties: Object Discovery Details: Member Modules:
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>