10 台机器的 MAC 地址列表

10 台机器的 MAC 地址列表

我需要列出 10 台安装了 Windows 7 的计算机的 MAC 地址。这些地址按 training1 - training10 这样的序列命名。

其 IP 地址处于 DHCP 模式,每周更新。

关于如何在 Windows 上编写脚本,您有什么想法吗?我知道 BASH 脚本,但 Windows Powershell 对我来说很新。

答案1

像这样的事情应该可以做到:

# An array of server names
$servers = 'comp1','comp2','comp3','comp4';
Get-WmiObject -computer $servers -class win32_networkadapter | 
    Where-Object AdapterType -eq 'Ethernet 802.3' | 
    Format-Table -auto __SERVER,Caption,ServiceName,AdapterType, MacAddress

结果如下(故意隐藏 MAC 地址):

__SERVER 描述 服务名称 适配器类型 Mac地址
-------- ----------- ----------- ----------- ----------
COMP1 Microsoft 虚拟机总线网络适配器 netvsc 以太网 802.3 xx:xx:xx:xx:xx:xx
COMP2 Microsoft 虚拟机总线网络适配器 netvsc 以太网 802.3 xx:xx:xx:xx:xx:xx
COMP3 Realtek PCIe GBE 系列控制器 RTL8167 以太网 802.3 xx:xx:xx:xx:xx:xx
COMP3 Microsoft 虚拟网络交换机适配器 VMSMP 以太网 802.3 xx:xx:xx:xx:xx:xx
COMP4 Realtek PCIe GBE 系列控制器 RTL8167 以太网 802.3 xx:xx:xx:xx:xx:xx

笔记:

  1. 有些计算机可以有多个 NIC,因此也有多个 MAC 地址。

  2. 并非所有 NIC 都是物理的。(上文中的 Hyper-V 虚拟化。)

  3. 从命令行工作时,我会使用 PSH 别名和位置参数:

    gwmi -comp 'comp1','comp2','comp3','comp4' win32_networkadapter | ? AdapterType -eq 'Ethernet 802.3' | ft -auto __SERVER,Caption,ServiceName,AdapterType, MacAddress
    

答案2

有一个 cmdlet 用于此目的:

Get-NetAdapter -Physical将为您提供有关本地接口的信息。

如果添加-CimSession参数(Get-NetAdapter -Physical -CimSession),则可以通过其连接到服务器ComputerName

您最终会得到:Get-NetAdapter -Physical -CimSession "ComputerName, ComputerName",其中您还可以填充ComputerName一个变量,其中包含您将要使用的服务器的名称。使用 分隔多个计算机名称,

powershell_ise.exe您可以通过在根目录中搜索来找到 PowerShell 集成脚本环境启动卷(通常为 C:)在 Windows 资源管理器中 :)。您可能需要右键单击并以管理员身份运行它 ;)。

为什么要使用 CIM?以下是一些可以说服您的理由:

新 CIM Cmdlet 的目标

  • 丰富的 PowerShell 体验。使 CIM 成为 PS 的一等公民,解决 WMI 和 WsMan Cmdlet 的可用性问题和用户反馈。

  • 标准合规性。我们非常重视标准,我们的目标是让 PowerShell 成为管理 Windows 和非 Windows 的最佳平台。新的 CIM Cmdlet 应该能够管理任何符合 CIM + WsMan 标准的端点,包括 Windows。

  • 支持低级机器。我们知道,数据中心中的低级服务器数量将比未来一段时间内的 Windows Server 2012 数量还要多。我们希望确保可以使用同一套 Cmdlet 来管理低级 Windows。

您可以阅读更多这里

还有一件事:您需要使用 Windows PowerShell 3.0 或更高版本才能实现此功能;要了解如何从 Windows 7 升级 Windows PowerShell 版本,请单击这里

相关内容