function Invoke-DB
{
	[CmdletBinding(DefaultParameterSetName = 'Insert')]
	param (
		[Parameter(Mandatory, ParameterSetName = 'Select')]
		[string]$sqlSelect = '',
		[Parameter(Mandatory, ParameterSetName = 'Insert')]
		[ValidateSet('Insert', 'Update', 'Delete')]
		[string]$sqlInsert = ''
	)
	
	if ($PSBoundParameters['sqlInsert'])
	{
		$cmd = New-Object Data.SqlClient.SqlCommand $sqlInsert, $conn
		$cmd.ExecuteNonQuery() | Out-Null
	}
	elseif ($PSBoundParameters['sqlSelect'])
	{
		$cmd = New-Object Data.SqlClient.SqlCommand $sqlSelect, $conn
		$cmd.ExecuteReader() | Out-Null
	}
}$computerName = Resolve-DnsName $ip
$os = Get-WmiObject -Computer $ip -Class Win32_OperatingSystem
$sql = "INSERT INTO computers (ip, computerName, os) VALUES ('$ip', '$computerName', '$os');"$Server = '.\SQLEXPRESS'
$InitialCatalog = 'master'
$DatabaseName = 'managementDB'
# Connect to SQL server
$conn = New-Object System.Data.Sqlclient.SqlConnection 
$conn.ConnectionString = "Data Source=$Server; Initial Catalog=$InitialCatalog; Integrated Security=True;"
$conn.Open()
# Создание БД
$cmd = $conn.CreateCommand() 
$cmd.CommandText = "IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = '$DatabaseName') CREATE DATABASE [$DatabaseName] COLLATE Cyrillic_General_CI_AS;"
$cmd.ExecuteNonQuery() | Out-Null
# Создание БД
$cmd.CommandText = "USE $DatabaseName; IF NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'ipaddress' ) CREATE TABLE [dbo].[ipaddress]([ip][varchar](15) NULL UNIQUE) ON [PRIMARY];"
$cmd.ExecuteNonQuery() | Out-Null 
$cmd.Dispose();
$conn.Close();
$conn.Dispose();# получаем диапазон ip-адресов
$ipStart = $ipaddress1.GetAddressBytes()
$ipEnd = $ipaddress2.GetAddressBytes()
$Server = '.\SQLEXPRESS'
$DatabaseName = 'managementDB'
Connect-DB -Server $Server -DatabaseName $DatabaseName
					
#добавляем диапазон ip-адресов в базу данных
for ($x = $ipStart[3]; $x -le $ipEnd[3]; $x++)
    {
        $ip = $ipStart[0], $ipStart[1], $ipStart[2], $x -join '.'
        $sql = "INSERT INTO ipaddress (ip) VALUES ('$ip'::inet);"
        Invoke-DB -sql $sql
    }# функция подключения к базе данных
function Connect-DB
{
	[CmdletBinding()]
	param (
		[Parameter(Mandatory)]
		[string]$Server,
		[string]$InitialCatalog = 'master',
		[string]$DatabaseName
	)
	$ConnectionString = "Data Source=$Server; Initial Catalog=$DatabaseName; Integrated Security=True;"
	$conn = New-Object Data.SqlClient.SqlConnection;
	$conn.ConnectionString = $ConnectionString;
	$conn.Open();
}
function Invoke-DB
{
	[CmdletBinding()]
	param (
		[Parameter(Mandatory)]
		[string]$sql
	)
	$cmd = New-Object Data.SqlClient.SqlCommand $sql, $conn;
	$cmd.ExecuteNonQuery();
}ERROR: Исключение при вызове "ExecuteNonQuery" с "0" аргументами: "ExecuteNonQuery: Свойство Connection не инициализировано."
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:425 знак:3
ERROR: +         $cmd.ExecuteNonQuery();
ERROR: +         ~~~~~~~~~~~~~~~~~~~~~~
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
ERROR:     + FullyQualifiedErrorId : InvalidOperationException
ERROR:
ERROR: Исключение при вызове "ExecuteNonQuery" с "0" аргументами: "ExecuteNonQuery: Свойство Connection не инициализировано."
ERROR: C:\Users\062User\Documents\SAPIEN\PowerShell Studio\Projects\SFR-Management\SFR-Management.Run.ps1:425 знак:3
ERROR: +         $cmd.ExecuteNonQuery();
ERROR: +         ~~~~~~~~~~~~~~~~~~~~~~
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
ERROR:     + FullyQualifiedErrorId : InvalidOperationException$buttonOK_Click = {
	if (-not [string]::IsNullOrEmpty($ipaddress1) -and -not [string]::IsNullOrEmpty($ipaddress2))
	{
		# проверка на валидность IP-адресов
		$ipObj = [System.Net.IPAddress]::None
		if ([System.Net.IPAddress]::TryParse($ipaddress1.Text, [ref]$ipObj) -and [System.Net.IPAddress]::TryParse($ipaddress2.Text, [ref]$ipObj))
		{
			# если проверка на валидность пройдена, то дальше проверяем на совпадения 3-х октетов
			$ipaddress1 = [System.Net.IPAddress]($ipaddress1.Text) # 10.62.39.1
			$ipaddress2 = [System.Net.IPAddress]($ipaddress2.Text) # 10.62.39.3
			$octets1 = $ipaddress1 -split '\.' # 10 62 39 1
			$octets2 = $ipaddress2 -split '\.' # 10 62 39 3
			$first3Octets1 = ($octets1 | Select-Object -First 3) -join '.' # 10.62.39
			$first3Octets2 = ($octets2 | Select-Object -First 3) -join '.' # 10.62.39
			if ($first3Octets1 -eq $first3Octets2)
			{
				if ([int]$octets1[3] -lt [int]$octets2[3]) # если первый октет меньше второго то едем дальше
				{									
					# получаем диапазон ip-адресов
					$ipStart = $ipaddress1.GetAddressBytes()
					$ipEnd = $ipaddress2.GetAddressBytes()
					
					Connect-DB
					
					#добавляем диапазон ip-адресов в базу данных
					for ($x = $ipStart[3]; $x -le $ipEnd[3]; $x++)
					{
						$ip = $ipStart[0], $ipStart[1], $ipStart[2], $x -join '.'
						$commandDB = "INSERT INTO public.ip_addresses (ip_range) VALUES ('$ip'::inet);"
						Write-Host $commandDB
						Insert-DB -commandDB $commandDB
					}
				}
				else
				{
					$textboxError.Text = "Неверно введено значение IP-адреса второго поля. Четвертый октет после последней точки должен быть больше четвертого октета в первом поле."
				}
			}
			else
			{
				$textboxError.Text = "Первые три октета IP-адресов не совпадают."
			}
		}
		else
		{
			$textboxError.Text = "Неверно введены IP-адреса. В поле 'От' введите начальное значение IP-адреса. В поле 'До' введите конечное значение IP-адреса."
		}
	}
	else
	{
		$textboxError.Text = "Поля не заполнены."
	}
}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:429 знак: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:429 знак: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:429 знак:3
ERROR: +         $adDB.Fill($dsDB) | out-null
ERROR: +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodException
ERROR:     + FullyQualifiedErrorId : MethodCountCouldNotFindBest$buttonOK_Click = {
	if (-not [string]::IsNullOrEmpty($ipaddress1) -and -not [string]::IsNullOrEmpty($ipaddress2))
	{
		# проверка на валидность IP-адресов
		$ipObj = [System.Net.IPAddress]::None
		if ([System.Net.IPAddress]::TryParse($ipaddress1.Text, [ref]$ipObj) -and [System.Net.IPAddress]::TryParse($ipaddress2.Text, [ref]$ipObj))
		{
			# если проверка на валидность пройдена, то дальше проверяем на совпадения 3-х октетов
			$ipaddress1 = [System.Net.IPAddress]($ipaddress1.Text) # 10.62.39.1
			$ipaddress2 = [System.Net.IPAddress]($ipaddress2.Text) # 10.62.39.3
			$octets1 = $ipaddress1 -split '\.' # 10 62 39 1
			$octets2 = $ipaddress2 -split '\.' # 10 62 39 3
			$first3Octets1 = ($octets1 | Select-Object -First 3) -join '.' # 10.62.39
			$first3Octets2 = ($octets2 | Select-Object -First 3) -join '.' # 10.62.39
			if ($first3Octets1 -eq $first3Octets2)
			{
				if ([int]$octets1[3] -lt [int]$octets2[3]) # если первый октет меньше второго то едем дальше
				{									
					# получаем диапазон ip-адресов
					$ipStart = $ipaddress1.GetAddressBytes()
					[Array]::Reverse($ipStart)
					$ipStart = ([System.Net.IPAddress]($ipStart -join '.')).Address
					$ipEnd = $ipaddress2.GetAddressBytes()
					[Array]::Reverse($ipEnd)
					$ipEnd = ([System.Net.IPAddress]($ipEnd -join '.')).Address
					
					Connect-DB
					
					#добавляем диапазон ip-адресов в базу данных
					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
					}
				}
				else
				{
					$textboxError.Text = "Неверно введено значение IP-адреса второго поля. Четвертый октет после последней точки должен быть больше четвертого октета в первом поле."
				}
			}
			else
			{
				$textboxError.Text = "Первые три октета IP-адресов не совпадают."
			}
		}
		else
		{
			$textboxError.Text = "Неверно введены IP-адреса. В поле 'От' введите начальное значение IP-адреса. В поле 'До' введите конечное значение IP-адреса."
		}
	}
	else
	{
		$textboxError.Text = "Поля не заполнены."
	}
}function Insert-DB
{
	[CmdletBinding()]
	param
	(
		[Parameter(Mandatory)]
		[string]$commandDB,
		[string]$connection
	)
	
	$adDB = New-Object System.Data.Odbc.OdbcDataAdapter
	$adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand($commandDB, $connection)
	$adDB.Fill($dsDB) | out-null
}if ([int]$octets1[3] -lt [int]$octets2[3]) # 50 < 55
				{									
					# получаем диапазон ip-адресов
					$ipadr1 = $ipaddress1.GetAddressBytes()
					[Array]::Reverse($ipadr1)
					$ipadr1 = ([System.Net.IPAddress]($ipadr1 -join '.')).Address
					$ipadr2 = $ipaddress2.GetAddressBytes()
					[Array]::Reverse($ipadr2)
					$ipadr2 = ([System.Net.IPAddress]($ipadr2 -join '.')).Address
					
					for ($x = $ipadr1; $x -le $ipadr2; $x++)
					{
						$ip = ([System.Net.IPAddress]$x).GetAddressBytes()
						[Array]::Reverse($ip)
						$ip = $ip -join '.'
						$commandDB = "INSERT INTO public.ipaddress (ip) VALUES ('$ip'::inet);"
					}
					$Connection = Connect-DB
					Insert-DB -Connection $Connection -Command $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)
	$cnDB.Open()
}
function Insert-DB
{
	[CmdletBinding()]
	param
	(
		[Parameter(Mandatory)]
		[string]$commandDB
		
	)
	$adDB = New-Object System.Data.Odbc.OdbcDataAdapter
	$adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand($commandDB, $cnDB)
	$adDB.Fill($dsDB) | out-null
	$cnDB.Close()
	$dsDB = New-Object System.Data.DataSet
}if ([int]$octets1[3] -lt [int]$octets2[3]) # 50 < 55
				{									
					# получаем диапазон ip-адресов
					$ipadr1 = $ipaddress1.GetAddressBytes()
					[Array]::Reverse($ipadr1)
					$ipadr1 = ([System.Net.IPAddress]($ipadr1 -join '.')).Address
					$ipadr2 = $ipaddress2.GetAddressBytes()
					[Array]::Reverse($ipadr2)
					$ipadr2 = ([System.Net.IPAddress]($ipadr2 -join '.')).Address
					
					$connection = Connect-DB
					for ($x = $ipadr1; $x -le $ipadr2; $x++)
					{
						$ip = ([System.Net.IPAddress]$x).GetAddressBytes()
						[Array]::Reverse($ip)
						$ip = $ip -join '.'
						$commandDB = "INSERT INTO public.ipaddress (ip) VALUES ('$ip'::inet) returning id;"
					}
					Insert-DB -Connection $Connection -Command $CommandDB
				}
				else
				{
					$textboxError.Text = "Неверно введено значение IP-адреса второго поля. Четвертый октет после последней точки должен быть больше четвертого октета в первом поле."
				}
 
        
Я уже близок к цели. Можешь подсказать только. Вот код, который я запускаю на своем ПК. Но выводятся два IP адреса 192.168.56.1 и 10.62.39.17
Мне нужен только второй IP адрес. Так как первый IP адрес - это виртуальная сеть VirtualBox, который мне не нужен.