Занести диапазон ip адресов в базу данных Postgresql

Всю голову уже сломал. При нажатии на кнопку "OK" в таблицу базу данных должен записаться диапазон ip адресов согласно данным из переменных $ipaddress1 = "10.62.39.50" и $ipaddress2 = "10.62.39.55" То есть, должно быть вот так: введите сюда описание изображения

При запуске кода, данные в таблицу не заносятся. Появляется ошибка: введите сюда описание изображения

    function Connect-DB
{
    [CmdletBinding()]
    param
    (
        [string]$dbServer = 'localhost',
        [string]$dbName = 'postgres',
        [string]$dbUser = 'postgres',
        [string]$dbPass = 'postgres',
        [string]$port = '5432'
    )
    
    $szConnect = "Driver={PostgreSQL UNICODE(x64)};Server=$dbServer;Port=$port;Database=$dbName;Uid=$dbUser;Pwd=$dbPass;"
    $cnDB = New-Object System.Data.Odbc.OdbcConnection($szConnect)
    $dsDB = New-Object System.Data.DataSet
    $cnDB.Open()
    $adDB = New-Object System.Data.Odbc.OdbcDataAdapter
    $adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand($commandDB, $cnDB)
    $adDB.Fill($dsDB)
    $cnDB.Close()
}

$ipaddress1 = "10.62.39.50"
$ipaddress2 = "10.62.39.55"
if (-not [string]::IsNullOrEmpty($ipaddress1) -and -not [string]::IsNullOrEmpty($ipaddress2))
{
    Write-Host "Успех"
    # проверка на валидность IP адресов
    $ipObj = [System.Net.IPAddress]::None
    if ([System.Net.IPAddress]::TryParse($ipaddress1, [ref]$ipObj) -and [System.Net.IPAddress]::TryParse($ipaddress2, [ref]$ipObj))
    {
        Write-Host "Проверка на валидность пройдена"
        # если проверка на валидность пройдена, то дальше проверяем на совпадения 3-х октетов
        $ipaddress1 = [System.Net.IPAddress]($ipaddress1) # 10.62.39.50
        Write-Host $ipaddress1
        $ipaddress2 = [System.Net.IPAddress]($ipaddress2) # 10.62.39.55
        Write-Host $ipaddress2
        $octets1 = $ipaddress1 -split '\.' # 10 62 39 50
        Write-Host $octets1
        $octets2 = $ipaddress2 -split '\.' # 10 62 39 55
        Write-Host $octets2
        $first3Octets1 = ($octets1 | Select-Object -First 3) -join '.' # 10.62.39
        Write-Host $first3Octets1
        $first3Octets2 = ($octets2 | Select-Object -First 3) -join '.' # 10.62.39
        Write-Host $first3Octets2
        if ($first3Octets1 -eq $first3Octets2)
        {
            if ([int]$octets1[3] -lt [int]$octets2[3]) # 50 < 55
            {                          
                # получаем диапазон ip-адресов
                $ipadr1 = $ipaddress1.GetAddressBytes()
                
                [Array]::Reverse($ipadr1)
                $ipadr1 = ([System.Net.IPAddress]($ipadr1 -join '.')).Address
                Write-Host $ipadr1
                
                $ipadr2 = $ipaddress2.GetAddressBytes()
                [Array]::Reverse($ipadr2)
                $ipadr2 = ([System.Net.IPAddress]($ipadr2 -join '.')).Address
                Write-Host $ipadr2
                
                for ($x = $ipadr1; $x -le $ipadr2; $x++)
                {
                    $ip = ([System.Net.IPAddress]$x).GetAddressBytes()
                    [Array]::Reverse($ip)
                    $ip = $ip -join '.'
                    Write-Host $ip
                    $commandDB = "INSERT INTO public.ipaddress (ip) VALUES ('$ip'::inet) returning id;"
                    Connect-DB($commandDB)
                }
            }
        }
        else
        {
            $textboxError = "Первые три октета IP адресов не совпадают."
        }
    }
    else
    {
        $textboxError = "Неверно введены IP адреса. В поле 'От' введите начальное значение IP адреса. В поле 'До' введите конечное значение IP адреса."
    }
}

Ответы (0 шт):