【问题标题】:LINQ query with ManagementObjectSearcher in Win32_NetworkAdapterConfiguration class在 Win32_NetworkAdapterConfiguration 类中使用 ManagementObjectSearcher 进行 LINQ 查询
【发布时间】: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 类。

【问题讨论】:

    标签: c# linq .net-core wmi


    【解决方案1】:

    我是这样改代码的:

        ManagementObjectSearcher NetworkSearcher = new ManagementObjectSearcher("SELECT IPAddress,MacAddress,Description FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");
    
        var rx = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b");
    
        foreach (ManagementObject prop in NetworkSearcher.Get())
        {
            if (rx.IsMatch(((String[])prop["IPAddress"])[0])) { 
                ipaddress.Add(String.Format("{0}\t{1}\t\t{2}", ((String[])prop["IPAddress"])[0], prop["MacAddress"], prop["Description"] ));
            }
        }
    

    不完全是我正在寻找的解决方案,但现在还可以

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    相关资源
    最近更新 更多