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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~