gpt4 book ai didi

linq - 相当于 LINQ SelectMany 方法的 PowerShell

转载 作者:行者123 更新时间:2023-12-03 12:04:44 30 4
gpt4 key购买 nike

我正在编写 PowerShell 代码来获取所有本地 IPv4 地址,不包括环回地址。我需要类似 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
}

我想知道是否有更简洁的方法,用更少的代码。

最佳答案

结合Foreach-Object就可以了和 Where-Object像这样:

$ipaddresses = @(
Get-WmiObject Win32_NetworkAdapterConfiguration |
? { $_.IPAddress -ne $null } |
% { $_.IPAddress } |
? { $_ -notlike "127.*" -and $_ -notlike "*::*" })

请注意 @(...) .这导致如果内部管道的结果为空,则将空数组分配给 $ipaddresses .

关于linq - 相当于 LINQ SelectMany 方法的 PowerShell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5241441/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com