function Parse-sdcli_iscsi_initiator_list { param ($raw) $raw = $raw -split '[\r\n]' $iscsitargetinfo = @() $line = 1 while ($line -lt $raw.count) { if ($raw[$line] -like '*connected iSCSI target*' -and $raw[$line]) { #Write-Host IGNORE : $raw[$line] $line ++$line } elseif ($raw[$line] -like '*Target name:*' -and $raw[$line]) { #Write-Host TARGET : $raw[$line] $target_name = $raw[$line].trim().replace("Target name: ", "") $target_lun_count = [int]($raw[++$line].split(":")[1].trim()) $target_session_count = [int]($raw[++$line].trim().split(" ")[0]) ++$line $sessioninfo = @() while ($raw[$line] -notlike "*Target name:*" -and $raw[$line]) { #Write-Host $raw[$line] $session_id = $raw[$line].split(":")[1].trim() $line = $line + 5 $connection_count = $raw[$line++].trim().split(" ")[0] #Write-Host " " SESSION_ID : $session_id $connectioninfo = @() while ($raw[$line] -notlike "*Session ID:*" -and $raw[$line] -and $raw[$line] -notlike "*Target name:*") { $connection_id = $raw[$line].split(":")[1].trim() #Write-Host " " CONNECTION_ID : $connection_id $line = $line + 3 if ($raw[$line] -like "*Portal ID:*") { $connection_portal_id = [int]($raw[$line++].split(":")[1].trim()) } if ($raw[$line] -like "*IP address:*") { $connection_initiator_ip_address = $raw[$line].split(":")[1].trim() } $connection_initiator_ip_port = [int]($raw[++$line].split(":")[1].trim()) ++$line $connection_target_ip_address = $raw[++$line].split(":")[1].trim() $connection_target_ip_port = [int]($raw[++$line].split(":")[1].trim()) $line = $line + 2 $connectioninfo += [PSCustomObject]@{ connection_id = $connection_id initiator_portal_id = $connection_portal_id initiator_ip_address = $connection_initiator_ip_address initiator_ip_port = $connection_initiator_ip_port target_ip_address = $connection_target_ip_address target_ip_port = $connection_target_ip_port } } $sessioninfo += [PSCustomObject]@{ session_id = $session_id connection_count = $connection_count connection_info = $connectioninfo } } $iscsitargetinfo += [PSCustomObject]@{ target = $target_name lun_Count = $target_lun_count session_count = $target_session_count session_info = $sessioninfo } } else { ++$line } } return $iscsitargetinfo }