Powershell:為自動化收集NIC PCI總線信息
當你進行一次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到注冊表。
復制粘貼會確保所有單雙引號都正確。希望這篇文章能對你有用。
【編輯推薦】