functions/Get-JS7JOCInstance.ps1

function Get-JS7JOCInstance
{
<#
.SYNOPSIS
Return status information of cluster members for JS7 JOC Cockpit instances.
 
.DESCRIPTION
Status information of each JOC Cockpit cluster member is returned.
 
.EXAMPLE
$cluster = Get-JS7JOCInstance
 
Returns status information about the JS7 JOC Cockpit cluster members.
 
.LINK
about_js7
 
#>

[cmdletbinding()]
param
(
)
    Begin
    {
        Approve-JS7Command $MyInvocation.MyCommand
        $stopWatch = Start-JS7StopWatch
    }

    Process
    {
        $body = New-Object PSObject
        Add-Member -Membertype NoteProperty -Name 'controllerId' -value $script:jsWebService.ControllerId -InputObject $body

        [string] $requestBody = $body | ConvertTo-Json -Depth 100
        $response = Invoke-JS7WebRequest -Path '/controller/components' -Body $requestBody

        if ( $response.StatusCode -eq 200 )
        {
            $requestResult = ( $response.Content | ConvertFrom-JSON ).jocs
        } else {
            throw ( $response | Format-List -Force | Out-String )
        }

        $returnJOCs = New-Object PSObject
        $returnPassiveJOCs = @()

        foreach( $joc in $requestResult )
        {
            if ( $joc.clusterNodeState."_text" -eq 'active' )
            {
                Add-Member -Membertype NoteProperty -Name 'active' -value $joc -InputObject $returnJOCs
            } else {
                $returnPassiveJOCs += $joc
            }
        }

        if ( $returnPassiveJOCs )
        {
            Add-Member -Membertype NoteProperty -Name 'passive' -value @( $returnPassiveJOCs ) -InputObject $returnJOCs
        }

        $returnJOCs
    }

    End
    {
        Trace-JS7StopWatch -CommandName $MyInvocation.MyCommand.Name -StopWatch $stopWatch
        Update-JS7Session
    }
}