Set-Cluster-Alarms.psm1

function Set-Cluster-Alarms {
    param(
        [Parameter (Mandatory = $true,
            ValueFromPipeline = $true)]
        [String]$ClusterName,
        [parameter(Mandatory = $true,
            ParameterSetName = 'enableSet')]
        [Switch]$Enable,
        [parameter(Mandatory = $true,
            ParameterSetName = 'disableSet')]
        [Switch]$Disable
    )
    begin {
    }

    process {
        $clusterobj = Get-Cluster $ClusterName -ErrorAction STOP
        Write-Host $clusterobj
        $vc = ($clusterobj | Get-VMHost | Select-Object -First 1).UID.Split(‘@‘)[1].Split(‘:’)[0]
        $alarmMgr = Get-View AlarmManager -Server $vc
        if ($null -eq $alarmMgr) {
            Write-Host "Unable to get alarm manager for $vc"
            return
        }
        $esx = $clusterobj | Get-VMHost -ErrorAction STOP | Sort-Object -Property Name
        if ($Enable) {
            $esx | ForEach-Object {
                Write-Host "Enabling alarms on $_"
                $alarmMgr.EnableAlarmActions($_.Extensiondata.MoRef, $true)
            }
            Write-Host "Enabling alarms on $clusterobj"
            $alarmMgr.EnableAlarmActions($clusterobj.Extensiondata.MoRef, $true)

        }
        elseif ($Disable) {
                $esx | ForEach-Object {
                    Write-Host "Disabling alarms on $_"
                    $alarmMgr.EnableAlarmActions($_.Extensiondata.MoRef, $false)
                }
                $alarmMgr.EnableAlarmActions($clusterobj.Extensiondata.MoRef, $false)
                Write-Host "Disabling alarms on $clusterobj"
            }
        }

        end {

        }
}