public/Get-FreeNasIscsiExtent.ps1

function Get-FreeNasIscsiExtent
{

    Param
    ()


    Begin
    {

    }
    Process
    {
        $Uri = "api/v1.0/services/iscsi/extent/"
        $result = Invoke-FreeNasRestMethod -Uri $Uri -Method Get

        $Extent = New-Object System.Collections.ArrayList

        if ($null -eq $result.Count)
        {
            try
            {
                if ($($result.iscsi_target_extent_type) -eq "Disk")
                {

                    $Disk_path = $($result.iscsi_target_extent_path)
                    $value = $Disk_path.Substring($Disk_path.Length - 3)

                    $DiskFreenas = Get-FreenasDisk

                    foreach ($item in $DiskFreenas)
                    {
                        if ($item.Name -eq $value)
                        {
                            $diskSize = $Item.Size_GB
                        }
                    }

                }
            }
            catch {}
            $temp = New-Object System.Object
            $temp | Add-Member -MemberType NoteProperty -Name "Id" -Value  "$($result.id)"
            $temp | Add-Member -MemberType NoteProperty -Name "Extent_Type" -Value "$($result.iscsi_target_extent_type)"
            $temp | Add-Member -MemberType NoteProperty -Name "Extent_Name" -Value  "$($result.iscsi_target_extent_name)"
            $temp | Add-Member -MemberType NoteProperty -Name "Extent_Size" -Value   $diskSize
            $temp | Add-Member -MemberType NoteProperty -Name "Extent_path" -Value  "$($result.iscsi_target_extent_path)"
            $temp | Add-Member -MemberType NoteProperty -Name "Extent_Block_Size" -Value  "$($result.iscsi_target_extent_blocksize)"
            $temp | Add-Member -MemberType NoteProperty -Name "Extent_Speed_Type" -Value "$($result.iscsi_target_extent_rpm)"

            $Extent.Add($temp) | Out-Null

        }
        else
        {
            for ($i = 0; $i -lt $result.Count; $i++)
            {
                try
                {
                    if ($($result[$i].iscsi_target_extent_type) -eq "Disk")
                    {

                        $Disk_path = $($result[$i].iscsi_target_extent_path)
                        $value = $Disk_path.Substring($Disk_path.Length - 3)

                        $DiskFreenas = Get-FreenasDisk

                        foreach ($item in $DiskFreenas)
                        {
                            if ($item.Name -eq $value)
                            {
                                $diskSize = $Item.Size_GB
                            }
                        }

                    }
                }
                Catch { throw }
                $temp = New-Object System.Object
                $temp | Add-Member -MemberType NoteProperty -Name "Id" -Value  "$($result[$i].id)"
                $temp | Add-Member -MemberType NoteProperty -Name "Extent_Type" -Value "$($result[$i].iscsi_target_extent_type)"
                $temp | Add-Member -MemberType NoteProperty -Name "Extent_Name" -Value  "$($result[$i].iscsi_target_extent_name)"
                $temp | Add-Member -MemberType NoteProperty -Name "Extent_Size" -Value   $diskSize
                $temp | Add-Member -MemberType NoteProperty -Name "Extent_path" -Value  "$($result[$i].iscsi_target_extent_path)"
                $temp | Add-Member -MemberType NoteProperty -Name "Extent_Block_Size" -Value  "$($result[$i].iscsi_target_extent_blocksize)"
                $temp | Add-Member -MemberType NoteProperty -Name "Extent_Speed_Type" -Value "$($result[$i].iscsi_target_extent_rpm)"
                $Extent.Add($temp) | Out-Null
            }

        }

        return $Extent


    }
    End
    {}
}