@atm87

Как в powershell записать диапазон ip-адресов в базу данных postgresql?

Есть файл SubnetForm.ps1 в котором следующий код:
$ipStart = "10.62.39.1"
$ipEnd = "10.62.39.3"

Connect-DB

for ($x = $ipStart; $x -le $ipEnd; $x++)
    {
        $ip = ([System.Net.IPAddress]$x).GetAddressBytes()
        [Array]::Reverse($ip)
        $ip = $ip -join '.'
        $commandDB = "INSERT INTO public.ip_addresses (ip_range) VALUES ('$ip'::inet);"
        Write-Host $commandDB
        Insert-DB -commandDB $commandDB
    }


Есть второй файл в котором имеется функция соединения с БД и записи в БД:
# функция соединения с БД
function Connect-DB
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory)]
        [string]$dbServer = 'localhost',
        [string]$dbName = 'postgres',
        [string]$dbUser = 'postgres',
        [string]$dbPass = 'postgres',
        [string]$port = '5432'
    )
    
    $connect = "Driver={PostgreSQL UNICODE(x64)};Server=$dbServer;Port=$port;Database=$dbName;Uid=$dbUser;Pwd=$dbPass;"
    $cnDB = New-Object System.Data.Odbc.OdbcConnection($connect)
    $dsDB = New-Object System.Data.DataSet
    $cnDB.Open()
}

function Insert-DB
{
    [CmdletBinding()]
    param (
        $commandDB
    )
    $adDB = New-Object System.Data.Odbc.OdbcDataAdapter
    $adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand($commandDB, $cnDB)
    $adDB.Fill($dsDB) | out-null
}


При запуске кода появляются ошибки:
INSERT INTO public.ip_addresses (ip_range) VALUES ('10.62.39.1'::inet);
ERROR: Обнаружено несколько неоднозначных перегрузок для "Fill", число аргументов: "1".
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:430 знак:3
ERROR: +         $adDB.Fill($dsDB) | out-null
ERROR: +         ____________________________
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodException
ERROR:     + FullyQualifiedErrorId : MethodCountCouldNotFindBest
ERROR:
INSERT INTO public.ip_addresses (ip_range) VALUES ('10.62.39.2'::inet);
ERROR: Обнаружено несколько неоднозначных перегрузок для "Fill", число аргументов: "1".
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:430 знак:3
ERROR: +         $adDB.Fill($dsDB) | out-null
ERROR: +         ____________________________
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodException
ERROR:     + FullyQualifiedErrorId : MethodCountCouldNotFindBest
ERROR:
INSERT INTO public.ip_addresses (ip_range) VALUES ('10.62.39.3'::inet);
ERROR: Обнаружено несколько неоднозначных перегрузок для "Fill", число аргументов: "1".
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:430 знак:3
ERROR: +         $adDB.Fill($dsDB) | out-null
ERROR: +         ____________________________
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodException
ERROR:     + FullyQualifiedErrorId : MethodCountCouldNotFindBest
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы