#168992 - 2006-10-06 11:10 AM
WMIQuery for physical network adapters in computers
|
Witto
MM club member
   
Registered: 2004-09-29
Posts: 1828
Loc: Belgium
|
I was searching for the network adapters of the computers in our network. But I get more then I wanted. How can I find out which adapters that are returned are real adapters, no virtual adapters? Code:
If NOT @LOGONMODE Break On Else Break Off EndIf Dim $RC $RC = SetOption("Explicit","On") $RC = SetOption("NoVarsInStrings","On") $RC = SetOption("NoMacrosInStrings","On") $RC = SetOption("WrapAtEOL","On")
Include "C:\Script\UDF\OSPing.UDF" Include "C:\Script\UDF\WMIQuery.udf"
Dim $objDomain, $objComputer Dim $arrComputers, $strComputer Dim $i, $What, $From, $Result Dim $INI $INI = @SCRIPTDIR + "\Computers.ini"
$objDomain = GetObject("WinNT://OurDomainName") $objDomain.Filter = "Computer",""
For Each $objComputer In $objDomain If NOT $arrComputers = "" $arrComputers = $arrComputers + "," EndIf $arrComputers = $arrComputers + $objComputer.Name Next $arrComputers = Split($arrComputers,",")
For Each $strComputer In $arrComputers ;? $strComputer $RC = WriteProfileString($INI,$strComputer,"","") If OSPing($strComputer) $i = 0 $From = 'Win32_NetworkAdapter' $What = 'Description' For Each $Result In WMIQuery($What,$From,$strComputer) $i = $i + 1 If $Result ? $what + "," + $From + "," + $i+ " = "+ $Result $RC = WriteProfileString($INI,$strComputer,$what + "," + $From + "," + $i,$Result) EndIf Next
$i = 0 $From = 'Win32_NetworkAdapter' $What = 'MACAddress' For Each $Result In WMIQuery($What,$From,$strComputer) $i = $i + 1 If $Result ? $what + "," + $From + "," + $i+ " = "+ $Result $RC = WriteProfileString($INI,$strComputer,$what + "," + $From + "," + $i,$Result) EndIf Next EndIf Next
|
|
Top
|
|
|
|
#168993 - 2006-10-06 03:49 PM
Re: WMIQuery for physical network adapters in computers
|
Allen
KiX Supporter
   
Registered: 2003-04-19
Posts: 4567
Loc: USA
|
If EnumNetworkConnections() doesn't already do what you want, I'd say it will get you going in the right direction.
|
|
Top
|
|
|
|
#168996 - 2006-10-07 12:02 AM
Re: WMIQuery for physical network adapters in computers
|
Witto
MM club member
   
Registered: 2004-09-29
Posts: 1828
Loc: Belgium
|
That one also looks good. I will keep them in mind. Right now, I try to do this with WMI because I want to create a simple script that can grow. Code:
If NOT @LOGONMODE Break On Else Break Off EndIf Dim $RC $RC = SetOption("Explicit","On") $RC = SetOption("NoVarsInStrings","On") $RC = SetOption("NoMacrosInStrings","On") $RC = SetOption("WrapAtEOL","On")
Include "C:\Script\UDF\OSPing.UDF"
Dim $objDomain, $objComputer Dim $arrComputers, $strComputer Dim $objWMIService, $colItems, $objItem Dim $i, $What, $From, $Result Dim $INI $INI = @SCRIPTDIR + "\Computers.ini"
$objDomain = GetObject("WinNT://DomainName") $objDomain.Filter = "Computer",""
For Each $objComputer In $objDomain If NOT $arrComputers = "" $arrComputers = $arrComputers + "," EndIf $arrComputers = $arrComputers + $objComputer.Name Next $arrComputers = Split($arrComputers,",")
For Each $strComputer In $arrComputers If OSPing($strComputer) $objWMIService = GetObject("winmgmts:\\" + $strComputer + "\root\cimv2") $From = "Win32_BIOS" $What = "SerialNumber" $colItems = $objWMIService.ExecQuery("Select * from " + $From,,48) $i = 0 For Each $objItem In $colItems $i = $i + 1 WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) Next $From = "Win32_SystemEnclosure" $What = "SerialNumber" $colItems = $objWMIService.ExecQuery("Select * from " + $From,,48) $i = 0 For Each $objItem In $colItems $i = $i + 1 WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) Next $From = "Win32_NetworkAdapter" $colItems = $objWMIService.ExecQuery("Select * from " + $From,,48) $i = 0 For Each $objItem In $colItems If $objItem.NetConnectionStatus <> "" $i = $i + 1 $What = "Description" WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) $What = "MACAddress" WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) EndIf Next $From = 'Win32_ComputerSystem' $colItems = $objWMIService.ExecQuery("Select * from " + $From,,48) $i = 0 For Each $objItem In $colItems $i = $i + 1 $What = "Manufacturer" WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) $What = "Model" WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) $What = "TotalPhysicalMemory" WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) $What = "Win32_TapeDrive" WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) Next EndIf Next
Function WriteToIni($objItem,$What,$INI,$strComputer,$From,$i) Dim $RC, $Result $RC = Execute('$Result = $objItem.'+$What) $RC = WriteProfileString($INI,$strComputer,$From+","+$What+","+$i,$Result) EndFunction
Edited by Witto (2006-10-07 12:17 AM)
|
|
Top
|
|
|
|
Moderator: Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart
|
0 registered
and 444 anonymous users online.
|
|
|