当你进行一次Hyper-V集群的部署时,配置网络会是一件痛苦的事情。不同的厂商或变更的硬件布局仅仅是自动化部署所遇挑战中的两个举例。这篇文章中我将和你分享用PowerShell收集信息的方法,这些信息关于哪个网络适配器位于什么PCI总线。你之后可以使用这些信息来重命名网络适配器,组合、更改网络适配器设置等等。
我们首先从收集现有网络适配器的信息开始。完成该过程的PowerShell命令如下:
Get-WMIObject Win32_PNPSignedDriver | where { $_.DeviceClass -eq “NET” -and $_.HardWareID -like “*PCI*”}
结果如下图所示:
在输出中我们发现网络适配器的位置。你可能会想,如果服务器上有12个网络适配器,那么它就不实用了。那么我们就能过在这条PowerShell命令中加入| ft Location来收集PCI总线信息。
Get-WMIObject Win32_PNPSignedDriver | where { $_.DeviceClass -eq “NET” -and $_.HardWareID -like “*PCI*”} | ft Location
现在我们拥有所有服务器中网络适配器的位置了,但是哪个是哪个呢?
我们需要的是适配器名称,比如任务管理器。下面的命令会让你得到这些信息。同样对于所有适配器,它就有些不适用了。
Get-WMIObject Win32_NetworkAdapter | where { $_.PNPDeviceID -eq $Adapter.DeviceID }
让我们将第一条命令放入变量中并且对第二条命令做一个循环。要显示结果,我们做一个简单的Write-Host来显示输出。接着脚本会显示如下:
$Adapters = Get-WMIObject Win32_PNPSignedDriver | where { $_.DeviceClass -eq “NET” -and $_.HardWareID -like “*PCI*”}
foreach ($Adapter in $Adapters ) {
$AdapterName = Get-WMIObject Win32_NetworkAdapter | where { $_.PNPDeviceID -eq $Adapter.DeviceID }
Write-Host ‘Adapter Name :’ $AdapterName.NetConnectionID
Write-Host ‘PCI BUS :’ $Adapter.Location
Write-Host ‘MAC Address :’ $AdapterName.MACAddress
Write-Host ‘GUID :’ $AdapterName.GUID
Write-Host
}
结果会怎么样呢?看看下面吧!
就是这样子。我还添加了MAC地址和GUID。这个实例的MAC地址还和博通的BACScli.exe命令行工具联合使用,用来配置网络适配器设置。如果需要,GUID可以用来添加TcpAckFrequency到注册表。
复制粘贴会确保所有单双引号都正确。希望这篇文章能对你有用。
【编辑推荐】