Я пишу код PowerShell, чтобы получить все локальные адреса IPv4, исключая loopback one. Мне нужно что-то вроде метода LINQ SelectMany, но я не могу понять, как это сделать с помощью PS-фильтров. Это код, который у меня есть до сих пор, который работает с использованием простого старого ArrayList:
function Get-Computer-IP-Address()
{
$ipAddresses = New-Object System.Collections.ArrayList
$networkAdaptersWithIp = Get-WmiObject Win32_NetworkAdapterConfiguration | ? { $_.IPAddress -ne $null }
foreach ($networkAdapter in $networkAdaptersWithIp)
{
foreach ($ipAddress in $networkAdapter.IPAddress)
{
if ($ipAddress -notlike "127.*" -and $ipAddress -notlike "*::*")
{
$ipAddresses.Add($ipAddress)
}
}
}
if ($ipAddresses.Length -eq 0)
{
throw "Failed to find any non-loopback IPv4 addresses"
}
return $ipAddresses
}