PureHostScript (Resource)

Element properties:

TypeResource
File NamePureHostState.ps1
AccessibilityInternal

Source Code:

<Resource FileName="PureHostState.ps1" ID="PureHostScript" Accessibility="Internal" HasNullStream="false"/>

File Content: PureHostState.ps1

param($SourcePureArrayID)

$ScriptName = "PureHostState.ps1"
LoadOperationsManagerModule $ScriptName

$whoami = whoami
$momapi = New-Object -comObject "Mom.ScriptAPI"
Log $ScriptName $GLOBAL:INFO_LEVEL "Starting script. Running as ($whoami)"
Log $ScriptName $GLOBAL:VERBOSE_LEVEL "SourcePureArrayID: $SourcePureArrayID"

$targetClass = Get-SCOMClass -Name PureStorage.FlashArray.PureHost
$sourceObject = Get-SCOMClassInstance -Id $SourcePureArrayID
$pureHosts = New-Object System.Collections.ArrayList
$relationships = Get-SCOMRelationshipInstance -SourceInstance $sourceObject
$targetClassID = $targetClass.id
foreach ($relationship in $relationships) {
$objectInstance = $relationship.TargetObject
if ($objectInstance.LeastDerivedNonAbstractManagementPackClassId -eq $targetClassID) {
$retObj = Get-SCOMClassInstance -Id $objectInstance.Id
$pureHosts.Add($retObj)
}
}
foreach ($pureHost in $pureHosts)
{
$HostObject = $ScriptContext.CreateFromObject($pureHost, "Id=Id,HealthState=HealthState,DisplayName=DisplayName", $null)
$ScriptContext.ReturnCollection.Add($HostObject)
Log $ScriptName $GLOBAL:VERBOSE_LEVEL "Found Host $pureHost"
}

$EndTime = Get-Date
$ScriptTime = ($EndTime - $StartTime).TotalSeconds
Log $ScriptName $GLOBAL:INFO_LEVEL " Script has completed. Runtime was ($ScriptTime) seconds."