SHM Discovery
PowerToolsShm.Discovery.PowerToolsShm.PowerShell (Discovery)
Description for SHM.
Element properties: Object Discovery Details: Member Modules:
Source Code: <Discovery ID="PowerToolsShm.Discovery.PowerToolsShm.PowerShell" Target="PowerToolsShm.SHMHost" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="PowerToolsShm.HostBusAdapter"/>
<DiscoveryClass TypeID="PowerToolsShm.PhysicalEnclosure"/>
<DiscoveryClass TypeID="PowerToolsShm.PhysicalDrive"/>
<DiscoveryClass TypeID="PowerToolsShm.EnclosureFan"/>
<DiscoveryClass TypeID="PowerToolsShm.EnclosureTemperatureSensor"/>
<DiscoveryClass TypeID="PowerToolsShm.EnclosureVoltageSensor"/>
<DiscoveryClass TypeID="PowerToolsShm.EnclosureCurrentSensor"/>
<DiscoveryClass TypeID="PowerToolsShm.EnclosureEmm"/>
<DiscoveryClass TypeID="PowerToolsShm.EnclosureDrawer"/>
<DiscoveryClass TypeID="PowerToolsShm.EnclosureDriveSlot"/>
<DiscoveryRelationship TypeID="PowerToolsShm.AdapterToEnclosure"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToDriveSlot"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToEmm"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToFan"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToPowerSupply"/>
<DiscoveryRelationship TypeID="PowerToolsShm.DriveSlotToDrive"/>
<DiscoveryRelationship TypeID="PowerToolsShm.DrawerToDrive"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToCurrentSensor"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToDrawer"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToTemperatureSensor"/>
<DiscoveryRelationship TypeID="PowerToolsShm.EnclosureToVoltageSensor"/>
</DiscoveryTypes>
<DataSource ID="SHM.Discovery.Classes" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<!-- IntervalSeconds specifies how often we will run the discovery. -->
<IntervalSeconds>1200</IntervalSeconds>
<!-- SyncTime specifies the minutes after the hour to synchronize execution of the discovery. -->
<SyncTime/>
<!-- ScriptName specifies the name of the script. -->
<ScriptName>ShmDiscovery.ps1</ScriptName>
<!-- ScriptBody is the text of the script. In this case, a variable is used to specify the script file in the VSAE project -->
<ScriptBody><Script> param($sourceId,$managedEntityId, $computerName, $restAddress)
$api = new-object -comObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $sourceId, $managedEntityId)
$api.LogScriptEvent("SHM Discovery",9955,2,"Started")
$installlocation = get-itemproperty -path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Dell, Inc.\Server Hardware Manager" -name Location
$scominstalllocation = $installlocation.Location + "\Dell\ServerHardwareManager\extras\scom"
$dlllocation = $scominstalllocation + "\PowerToolsShm.dll"
try
{
Add-Type -Path $dlllocation
}
catch
{
$api.LogScriptEvent("ErrorAddType",9901,2,$_)
}
# for some reason get enlcosures needed a new obj - plus the new object had to be created out of the loops
try
{
$shmrestObj = New-Object PowerToolsShmDiscovery.ShmRest($restAddress)
$shmrestObj2 = New-Object PowerToolsShmDiscovery.ShmRest($restAddress)
$shmrestObj3 = New-Object PowerToolsShmDiscovery.ShmRest($restAddress)
$shmrestObjEmm = New-Object PowerToolsShmDiscovery.ShmRest($restAddress)
$shmrestObjFans = New-Object PowerToolsShmDiscovery.ShmRest($restAddress)
$shmrestObjVs = New-Object PowerToolsShmDiscovery.ShmRest($restAddress)
$shmrestDrives = New-Object PowerToolsShmDiscovery.ShmRest($restAddress)
}
catch
{
$api.LogScriptEvent("SHM New-Object",9901,2,$_)
}
if ($shmrestObj3 -eq $null)
{
$api.LogScriptEvent("SHM ERROR",9901,1,"Unable to create REST class instance")
}
if ($shmrestObj.TestRestServer() –eq $FALSE)
{
$api.LogScriptEvent("SHM Discovery Error",8001,1,"Unable to connect to REST Server")
Exit
}
$drivemap = @{}
$listDrives = $shmrestObj3.GetDrives()
$api.LogScriptEvent("DONE",9988,2,"DriveCount=" + $listDrives.Count)
foreach ($drive in $listDrives)
{
$instanceDrive = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.PhysicalDrive']$")
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/WWID$", $drive.WWID)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/FirmwareRevision$", $drive.FirmwareRevision)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/SerialNumber$", $drive.SerialNumber)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/VendorId$", $drive.VendorId)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/ProductId$", $drive.ProductId)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/TargetPortWwn$", $drive.TargetPortWwn)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/TargetPortWwn2$", $drive.TargetPortWwn2)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/Size$", $drive.Size)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/OSPath$", $drive.OSPath)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/SizeBytes$", $drive.SizeBytes)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/PredictedFail$", $drive.PredictedFail)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/SupportedDrive$", $drive.SupportedDrive)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/Status$", $drive.Status)
$instanceDrive.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalDrive']/ComputerName$", $computerName)
$instanceDrive.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$discoveryData.AddInstance($instanceDrive)
#$api.LogScriptEvent("NewDrive",9955,2,"NewDrive=" + $drive.WWID)
$drivemap.add($drive.TargetPortWwn,$instanceDrive)
$drivemap.add($drive.TargetPortWwn2,$instanceDrive)
}
$listAdapters = $shmrestObj.GetAdapters()
$api.LogScriptEvent("DONE",9988,2,"adaptercount=" + $listAdapters.Count)
foreach ($a in $listAdapters)
{
#$a
$instanceAdapter = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.HostBusAdapter']$")
$now = Get-Date
$instanceAdapter.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $a.Name)
$instanceAdapter.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/ComputerName$", $computerName)
$instanceAdapter.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$instanceAdapter.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/FirmwareVersion$", $a.FW_Version)
$instanceAdapter.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/EFI_BIOS$", $a.EFI_BIOS)
$instanceAdapter.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/x86_BIOS$", $a.x86_BIOS)
$instanceAdapter.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/LastRefresh$", $now)
$instanceAdapter.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$currentAdapterWwid = $a.SAS_WWID
$discoveryData.AddInstance($instanceAdapter)
$listenclosures = $shmrestObj2.GetEnclosuresForAdapter($a.SAS_WWID)
foreach ($e in $listenclosures)
{
#$e
$instanceEnclosure = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']$")
$dn = $e.ProductName + " (" + $e.EnclosureWWID + ")"
$instanceEnclosure.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $dn)
#$instanceEnclosure.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/Name$", $emm.Name)
$instanceEnclosure.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceEnclosure.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/ServiceTag$", $e.ServiceTag)
$instanceEnclosure.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/OverallStatus$", $e.OverallStatus)
$instanceEnclosure.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/LastRefresh$", $now)
$instanceEnclosure.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/ComputerName$", $computerName)
$instanceEnclosure.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$instanceEnclosure.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$discoveryData.AddInstance($instanceEnclosure)
#driveslots
$listdriveSlots = $shmrestObj3.GetDriveSlotsForEnclosure($e.EnclosureWWID)
foreach ($lds in $listdriveSlots)
{
#$lds
$instanceSlot = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']$")
$instanceSlot.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $lds.Name)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/Status$", $lds.Status)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/EnclosureWWID$", $e.EnclosureWWID)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/EnclosureSlot$", $lds.EnclosureSlot)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/Drawer$", $lds.Drawer)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/DrawerSlot$", $lds.DrawerSlot)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/Blinking$", $lds.Blinking)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/PoweredOff$", $lds.PoweredOff)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/AttachedSASAddress0$", $lds.AttachedSASAddress0)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/AttachedSASAddress1$", $lds.AttachedSASAddress1)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDriveSlot']/ElementIndex$", $lds.EnclosureSlot)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceSlot.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$instanceSlot.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$discoveryData.AddInstance($instanceSlot)
$listDriveSlotDrives = $shmrestDrives.GetDriveForSlot($a.SAS_WWID, $e.EnclosureWWID, $lds.EnclosureSlot)
#$api.LogScriptEvent("test1",9888,2,"count=" + $listDriveSlotDrives.length + ",a=" + $a.SAS_WWID + ",e=" + $e.EnclosureWWID + ",s=" + $lds.EnclosureSlot)
foreach ($dsd in $listDriveSlotDrives)
{
#$api.LogScriptEvent("test1",9999,2,"2this is a test")
if ($drivemap.ContainsKey($dsd.TargetPortWwn))
{
$founddrive = $drivemap.Get_Item($dsd.TargetPortWwn)
$relInstanceDstd = $discoverydata.CreateRelationshipInstance("$MPElement[Name='PowerToolsShm.DriveSlotToDrive']$")
$relInstanceDstd.Source = $instanceSlot
$relInstanceDstd.Target = $founddrive
$discoveryData.AddInstance($relInstanceDstd)
}
}
}
#emms
$listemms = $shmrestObjEmm.GetEmmsForEnclosure($e.EnclosureWWID)
foreach ($emm in $listemms)
{
# $emm
$instanceEmm = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosureEmm']$")
$instanceEmm.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $emm.ProductId)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/Status$", $emm.Status)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/EnclosureWWID$", $e.EnclosureWWID)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/FirmwareRevision$", $emm.FirmwareRevision)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/SerialNumber$", $emm.SerialNumber)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/VendorId$", $emm.VendorId)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/ProductId$", $emm.ProductId)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/TargetPortWwn$", $emm.TargetPortWwn)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureEmm']/NumAdaptersConnected$", $emm.AdapterCount)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceEmm.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instanceEmm.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$discoveryData.AddInstance($instanceEmm)
}
#fans
$e.EnclosureWWID
$listfans = $shmrestObjFans.GetFansForEnclosure($e.EnclosureWWID)
foreach ($fan in $listfans)
{
$instanceFan = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosureFan']$")
$instanceFan.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $fan.Name)
$instanceFan.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureFan']/Status$", $fan.Status)
$instanceFan.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureFan']/EnclosureWWID$", $e.EnclosureWWID)
$instanceFan.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureFan']/RPM$", $fan.RPM)
$instanceFan.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureFan']/SpeedCode$", $fan.SpeedCode)
$instanceFan.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureFan']/ElementIndex$", $fan.ElementIndex)
$instanceFan.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceFan.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$instanceFan.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$discoveryData.AddInstance($instanceFan)
}
#powersupplies
$listps = $shmrestObjFans.GetPowerSuppliesForEnclosure($e.EnclosureWWID)
foreach ($ps in $listps)
{
$instancePs = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']$")
$instancePs.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ps.Name)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/Status$", $ps.Status)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/EnclosureWWID$", $e.EnclosureWWID)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/DCOverVoltage$", $ps.DCOverVoltage)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/DCUnderVoltage$", $ps.DCUnderVoltage)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/DCOverCurrent$", $ps.DCOverCurrent)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/DCFail$", $ps.DCFail)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/ACFail$", $ps.ACFail)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosurePowerSupply']/ElementIndex$", $ps.ElementIndex)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instancePs.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instancePs.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$discoveryData.AddInstance($instancePs)
}
#voltagesensors
$listvs = $shmrestObjFans.GetVoltageSensorsForEnclosure($e.EnclosureWWID)
foreach ($Vs in $listvs)
{
$instanceVs = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']$")
$instanceVs.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Vs.Name)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/Status$", $Vs.Status)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/EnclosureWWID$", $e.EnclosureWWID)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/Millivolts$", $Vs.Millivolts)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/WarnOver$", $Vs.WarnOver)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/WarnUnder$", $Vs.WarnUnder)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/CritOver$", $Vs.CritOver)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/CritUnder$", $Vs.CritUnder)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureVoltageSensor']/ElementIndex$", $Vs.ElementIndex)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceVs.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instanceVs.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$discoveryData.AddInstance($instanceVs)
}
##currentSensors
$listcs = $shmrestObjFans.GetCurrentSensorsForEnclosure($e.EnclosureWWID)
foreach ($Cs in $listcs)
{
$instanceCs = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosureCurrentSensor']$")
$instanceCs.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Cs.Name)
$instanceCs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureCurrentSensor']/Status$", $Cs.Status)
$instanceCs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureCurrentSensor']/EnclosureWWID$", $e.EnclosureWWID)
$instanceCs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureCurrentSensor']/CurrentMilliamps$", $Cs.CurrentMilliamps)
$instanceCs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureCurrentSensor']/ElementIndex$", $Cs.ElementIndex)
$instanceCs.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceCs.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instanceCs.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$discoveryData.AddInstance($instanceCs)
}
#temperatureSensors
$listts = $shmrestObjFans.GetTemperatureSensorsForEnclosure($e.EnclosureWWID)
foreach ($Ts in $listts)
{
$instanceTs = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosureTemperatureSensor']$")
$instanceTs.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Ts.Name)
$instanceTs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureTemperatureSensor']/Status$", $Ts.Status)
$instanceTs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureTemperatureSensor']/EnclosureWWID$", $e.EnclosureWWID)
$instanceTs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureTemperatureSensor']/TemperatureCelcius$", $Ts.TemperatureCel)
$instanceTs.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureTemperatureSensor']/ElementIndex$", $Ts.ElementIndex)
$instanceTs.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceTs.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instanceTs.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$discoveryData.AddInstance($instanceTs)
}
#temperatureSensors
$listdwrs = $shmrestObjFans.GetDrawersForEnclosure($e.EnclosureWWID)
foreach ($d in $listdwrs)
{
$instanceD = $discoveryData.CreateClassInstance("$MPElement[Name='PowerToolsShm.EnclosureDrawer']$")
$instanceD.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $d.Name)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDrawer']/Status$", $d.Status)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDrawer']/EnclosureWWID$", $d.EnclosureWWID)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDrawer']/DrawerNumber$", $d.DrawerNumber)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDrawer']/DriveCountInstalled$", $d.DriveCountInstalled)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDrawer']/Failed$", $d.Failed)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDrawer']/Open$", $d.Open)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.EnclosureDrawer']/ElementIndex$", $d.ElementIndex)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.PhysicalEnclosure']/WWID$", $e.EnclosureWWID)
$instanceD.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$instanceD.AddProperty("$MPElement[Name='PowerToolsShm.HostBusAdapter']/WWID$", $a.SAS_WWID)
$discoveryData.AddInstance($instanceD)
$listDrawerDrives = $shmrestDrives.GetDrivesForDrawer($currentAdapterWwid, $e.EnclosureWWID, $d.DrawerNumber)
foreach ($ad in $listDrawerDrives)
{
if ($drivemap.ContainsKey($ad.TargetPortWwn))
{
$founddrive = $drivemap.Get_Item($ad.TargetPortWwn)
$relInstanceDd = $discoverydata.CreateRelationshipInstance("$MPElement[Name='PowerToolsShm.DrawerToDrive']$")
$relInstanceDd.Source = $instanceD
$relInstanceDd.Target = $founddrive
$discoveryData.AddInstance($relInstanceDd)
}
}
}
}
}
#$api.LogScriptEvent("DONE",9988,2,"Finished")
$discoveryData</Script> </ScriptBody>
<!-- Parameters for the script. -->
<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>
<Parameter>
<Name>restAddress</Name>
<Value>$Target/Property[Type="PowerToolsShm.SHMHost"]/RESTAddress$</Value>
</Parameter>
</Parameters>
<!-- TimeoutSeconds is the seconds that the script must be running before it is automatically ended. -->
<TimeoutSeconds>1200</TimeoutSeconds>
</DataSource>
</Discovery>