Powershell:為自動化收集NIC PCI總線信息
當(dāng)你進(jìn)行一次Hyper-V集群的部署時,配置網(wǎng)絡(luò)會是一件痛苦的事情。不同的廠商或變更的硬件布局僅僅是自動化部署所遇挑戰(zhàn)中的兩個舉例。這篇文章中我將和你分享用PowerShell收集信息的方法,這些信息關(guān)于哪個網(wǎng)絡(luò)適配器位于什么PCI總線。你之后可以使用這些信息來重命名網(wǎng)絡(luò)適配器,組合、更改網(wǎng)絡(luò)適配器設(shè)置等等。
我們首先從收集現(xiàn)有網(wǎng)絡(luò)適配器的信息開始。完成該過程的PowerShell命令如下:
Get-WMIObject Win32_PNPSignedDriver | where { $_.DeviceClass -eq “NET” -and $_.HardWareID -like “*PCI*”} |
結(jié)果如下圖所示:
在輸出中我們發(fā)現(xiàn)網(wǎng)絡(luò)適配器的位置。你可能會想,如果服務(wù)器上有12個網(wǎng)絡(luò)適配器,那么它就不實用了。那么我們就能過在這條PowerShell命令中加入| ft Location來收集PCI總線信息。
Get-WMIObject Win32_PNPSignedDriver | where { $_.DeviceClass -eq “NET” -and $_.HardWareID -like “*PCI*”} | ft Location |
現(xiàn)在我們擁有所有服務(wù)器中網(wǎng)絡(luò)適配器的位置了,但是哪個是哪個呢?
我們需要的是適配器名稱,比如任務(wù)管理器。下面的命令會讓你得到這些信息。同樣對于所有適配器,它就有些不適用了。
Get-WMIObject Win32_NetworkAdapter | where { $_.PNPDeviceID -eq $Adapter.DeviceID } |
讓我們將第一條命令放入變量中并且對第二條命令做一個循環(huán)。要顯示結(jié)果,我們做一個簡單的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 } |
結(jié)果會怎么樣呢?看看下面吧!
就是這樣子。我還添加了MAC地址和GUID。這個實例的MAC地址還和博通的BACScli.exe命令行工具聯(lián)合使用,用來配置網(wǎng)絡(luò)適配器設(shè)置。如果需要,GUID可以用來添加TcpAckFrequency到注冊表。
復(fù)制粘貼會確保所有單雙引號都正確。希望這篇文章能對你有用。
【編輯推薦】