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