Ethernet Errors
While we are looking at the MSNdis_Ethernet* classes we should consider these three that pick up potential problems
MSNdis_EthernetReceiveErrorAlignment
MSNdis_EthernetOneTransmitCollision
MSNdis_EthernetMoreTransmitCollisions
If all is well we will get an answer of zero for each of them – no errors and no collisions. Its a bit awkward working through each class in turn and we get a lot of “noise” returned so the following function concatenates the results.
function test-etherneterror {
param(
[string]$computer="."
)
Get-WmiObject -Namespace root\wmi -Class MSNdis_EthernetReceiveErrorAlignment `
-ComputerName $computer |
foreach {
$one = Get-WmiObject -Namespace root\wmi `
-Class MSNdis_EthernetOneTransmitCollision -ComputerName $computer `
-Filter "InstanceName='$($_.InstanceName)'"
$more = Get-WmiObject -Namespace root\wmi `
-Class MSNdis_EthernetMoreTransmitCollisions -ComputerName $computer `
-Filter "InstanceName='$($_.InstanceName)'"
New-Object -TypeName PSobject -Property @{
Computer = $_.__SERVER
Adapter = $_.InstanceName
ReceiveError = $_.NdisEthernetReceiveErrorAlignment
OneCollision = $one.NdisEthernetOneTransmitCollision
MoreCollision = $more.NdisEthernetMoreTransmitCollisions
}
}
}
Start by getting the members of the MSNdis_EthernetReceiveErrorAlignment class. Loop through them and get the related MSNdis_EthernetOneTransmitCollision and MSNdis_EthernetMoreTransmitCollisions classes.
Create an object for output