【发布时间】:2021-02-13 07:57:35
【问题描述】:
我有以下 powershell 查询,我想将其转换为 .net core C#
@(Get-WmiObject win32_networkadapterconfiguration `
| Select-Object -Property @{name='IPAddress';Expression={($_.IPAddress[0])}},MacAddress,Description `
| Where IPAddress -NE $null)
这会选择所有 ip4 地址加上 MacAddress 和 Description。
但是仅仅选择 ip4 地址似乎更难了。到目前为止,我有这个:
var rx = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b");
var testregex = rx.IsMatch("192.168.11.2");
ManagementObjectSearcher NetworkSearcher = new ManagementObjectSearcher("SELECT IPAddress,MacAddress,Description FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");
var sIPAddress =
NetworkSearcher.Get()
.Cast<ManagementObject>()
.Where((o) => rx.IsMatch((string)o["IPAddress"]));
//.SelectMany(o => (string[])(o["IPAddress"])));
var sIPAddress2 =
NetworkSearcher.Get().Cast<ManagementObject>().SelectMany(mo => mo.Properties.Cast<PropertyData>())
.Where(pd => pd.Name == "IPAddress" && (t => rx.IsMatch(t)); ;
我想我的问题之一是属性名称未知,而且还删除了非 ipv4 地址。我正在使用 WMI,因为稍后我还需要查询 MSFT_NetIPAddress 类。
【问题讨论】: