C# 利用Powershell获取网络相关信息

利用Get-NetAdapter获取信息

Get-NetAdapter

 参考链接:https://docs.microsoft.com/en-us/powershell/module/netadapter/get-netadapter?view=winserver2012r2-ps

显示的属性如下(表格形式):

根据文档描述,我们可以根据Name或者InterfaceDescription过滤出想要的那个适配器。

复制代码
using (PowerShell powerShellInstance = PowerShell.Create())
{
    powerShellInstance.AddCommand("Get-NetAdapter");

    Collection<PSObject> psOutput = powerShellInstance.Invoke();

    foreach (PSObject result in psOutput)
    {
        if (result.Members["InterfaceDescription"].Value?.ToString().ToUpper()?.Contains(adapterDescript.ToUpper()) ?? false)
        {
            mac = result.Members["PermanentAddress"].Value?.ToString();break;
        }
    }

    return mac;
}
复制代码

补充:

Members中的"PermanentAddress"可以在Powershell源码GetComputerInfoCommand.cs查询到。

另外,返回的mac地址并没有格式,需要自己转换

还有个牛逼之处就是,禁用的网卡也能拿取信息?!

 

利用Get-NetIPAddress获取信息

Get-NetIPAddress

参考链接:https://docs.microsoft.com/en-us/powershell/module/nettcpip/Get-NetIPAddress?view=winserver2012r2-ps

显示的属性如下:

一般我们可以使用组合的指令

Get-NetIPAddress -InterfaceAlias "以太网 6" -AddressFamily IPv4

比如这个,就是过滤名字叫“以太网 6”,看IP是IPv4的内容。使用组合形式的代码是这样的:

复制代码
using (PowerShell powerShellInstance = PowerShell.Create())
{
    powerShellInstance.AddCommand("Get-NetIPAddress");
    powerShellInstance.AddParameter("InterfaceAlias", name);
    powerShellInstance.AddParameter("AddressFamily", "IPv4");

    Collection<PSObject> psOutput = powerShellInstance.Invoke();

    foreach (PSObject result in psOutput)
    {
        ipAddress = result.Members["IPAddress"].Value.ToString();
    }

    return ipAddress;
}
复制代码

 

posted @   樱花落舞  阅读(586)  评论(2编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示