PureVolumeScript (Resource)

Element properties:

TypeResource
File NamePureVolumeState.ps1
AccessibilityInternal

Source Code:

<Resource FileName="PureVolumeState.ps1" ID="PureVolumeScript" Accessibility="Internal" HasNullStream="false"/>

File Content: PureVolumeState.ps1

param($SourcePureArrayID)

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.PureVolume
$sourceObject = Get-SCOMClassInstance -Id $SourcePureArrayID
$pureVolumes = 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
$pureVolumes.Add($retObj)
}
}
foreach ($pureVolume in $pureVolumes)
{
$volumeObject = $ScriptContext.CreateFromObject($pureVolume, "Id=Id,HealthState=HealthState,DisplayName=DisplayName", $null)
$ScriptContext.ReturnCollection.Add($volumeObject)
Log $ScriptName $GLOBAL:VERBOSE_LEVEL "Found volume $pureVolume"
}

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