Public/Get-SilkSessions.ps1

function Get-SilkSessions {
    param(
        [Parameter()]
        [ipaddress] $cnodeIP
    )

    if ($cnodeIP) {
        $allConnections = Get-IscsiConnection | where-object {$_.TargetAddress -eq $cnodeIP.IPAddressToString}
    } else {
        $allConnections = Get-IscsiConnection 
    }

    $returnArray = @()

    $allTargetIPs = ($allConnections | Select-Object TargetAddress -Unique).TargetAddress

    foreach ($i in $allTargetIPs) {
        $o = New-Object psobject
        $o | Add-Member -MemberType NoteProperty -Name "CNode IP" -Value $i
        $o | Add-Member -MemberType NoteProperty -Name "Host IP" -Value ($allConnections | Where-Object {$_.TargetAddress -eq $i} | Select-Object InitiatorAddress -Unique).InitiatorAddress
        $o | Add-Member -MemberType NoteProperty -Name "Configured Sessions" -Value ($allConnections | Where-Object {$_.TargetAddress -eq $i} | Get-IscsiSession | Where-Object {$_.IsDiscovered}).count
        $o | Add-Member -MemberType NoteProperty -Name "Connected Sessions" -Value ($allConnections | Where-Object {$_.TargetAddress -eq $i}).count 
        $o | Add-Member -MemberType NoteProperty -Name "Silk IQN" -Value $silkTargetIQN

        $returnArray += $o
    }

    if ($returnArray) {
        return $returnArray | Format-Table
    } else {
        $o = New-Object psobject
        $o | Add-Member -MemberType NoteProperty -Name "CNode IP" -Value $null
        $o | Add-Member -MemberType NoteProperty -Name "Host IP" -Value $null
        $o | Add-Member -MemberType NoteProperty -Name "Configured Sessions" -Value $null
        $o | Add-Member -MemberType NoteProperty -Name "Connected Sessions" -Value $null
        $o | Add-Member -MemberType NoteProperty -Name "Silk IQN" -Value $null
        return $o | Format-Table
    }
    

    # Get-IscsiTarget - get server iqn
    # Get-IscsiConnection - get session information
    # Get-InitiatorPort - get host IQN
    # Get-IscsiConnection | Get-IscsiSession
}