Functions/Report/Get-SOSIDs.psm1

#region: Get-SOSIDs
<#
    .Synopsis
    Lists all ServiceSets from your StoreOnce system(s).
 
    .Description
    Lists all ServiceSets from your StoreOnce system(s).
    Outputs: ArrayIP,SSID,Name,Alias,OverallHealth,SerialNumber,Capacity(GB).Free(GB),UserData(GB),DiskData(GB)
     
    .Parameter D2DIPs
    IP Address of your StoreOnce system(s).
 
    .Example
    Get-SOSIDs -D2DIPs 192.168.2.1, 192.168.2.2
 
#Requires PS -Version 4.0
#>

function Get-SOSIDs {
    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true, Position=0)]
            $D2DIPs
    )
    Process {
        if ($SOCred -eq $null) {Write-Error "No Credential Set! Use 'set-SOCredentials'" -Category ConnectionError; Return}
        $SOSIDs =  @()
        
        ForEach ($D2DIP in $D2DIPs) {
            if (Test-IP -IP $D2DIP) {
                $SIDCall = @{uri = "https://$D2DIP/storeonceservices/cluster/servicesets/";
                            Method = 'GET';
                            Headers = @{Authorization = 'Basic ' + $SOCred;
                                        Accept = 'text/xml'
                            } 
                        } 
                    
                $SIDsResponse = Invoke-RestMethod @SIDCall
                $SIDCount = ($SIDsResponse.document.servicesets.serviceset).count
                if ($SIDCount -eq $null) {$SIDCount = 1}
                [Array] $SSID = $SIDsResponse.document.servicesets.serviceset.properties.ssid
                [Array] $Name = $SIDsResponse.document.servicesets.serviceset.properties.name
                [Array] $Alias = $SIDsResponse.document.servicesets.serviceset.properties.alias
                [Array] $OverallHealth = $SIDsResponse.document.servicesets.serviceset.properties.overallHealth
                [Array] $SerialNumber = $SIDsResponse.document.servicesets.serviceset.properties.serialNumber
                [Array] $CapacityBytes = $SIDsResponse.document.servicesets.serviceset.properties.capacityBytes
                [Array] $FreeBytes = $SIDsResponse.document.servicesets.serviceset.properties.freeBytes
                [Array] $UserBytes = $SIDsResponse.document.servicesets.serviceset.properties.userBytes
                [Array] $DiskBytes = $SIDsResponse.document.servicesets.serviceset.properties.diskBytes
                
                for ($i = 0; $i -lt $SIDCount; $i++ ){        
                    $row = [PSCustomObject] @{
                        ArrayIP = $D2DIP
                        SSID = $SSID[$i]
                        Name = $Name[$i]
                        Alias = $Alias[$i]
                        OverallHealth = $OverallHealth[$i]
                        SerialNumber = $SerialNumber[$i]
                        "Capacity(GB)" = ([math]::Round(($CapacityBytes[$i] / 1073741824),2))
                        "Free(GB)" = ([math]::Round(($FreeBytes[$i] / 1073741824),2))
                        "UserData(GB)" = ([math]::Round(($UserBytes[$i] / 1073741824),2))
                        "DiskData(GB)" = ([math]::Round(($DiskBytes[$i] / 1073741824),2))
                    }
                    $SOSIDs += $row
                } 
            }
        }

    Return $SOSIDs
    }
} 
#endregion