利用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; }