Page 1 of 1 1
Topic Options
#168992 - 2006-10-06 11:10 AM WMIQuery for physical network adapters in computers
Witto Offline
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 Administrator Offline
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
#168994 - 2006-10-06 04:13 PM Re: WMIQuery for physical network adapters in computers
Witto Offline
MM club member
*****

Registered: 2004-09-29
Posts: 1828
Loc: Belgium
Indeed looks like what I am looking for.
If I want to use WMI, I think I will want to check NetConnectionStatus in WIN32_NetworkAdapter.
http://www.microsoft.com/technet/scriptcenter/topics/ccs/ccs_predeploy1.mspx

Top
#168995 - 2006-10-06 08:16 PM Re: WMIQuery for physical network adapters in computers
NTDOC Administrator Offline
Administrator
*****

Registered: 2000-07-28
Posts: 11631
Loc: CA
There is also this one.

NICInfo() Return info about all NICs
http://www.kixtart.org/ubbthreads/showflat.php?Cat=0&Number=150379

Give it a try

Top
#168996 - 2006-10-07 12:02 AM Re: WMIQuery for physical network adapters in computers
Witto Offline
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
Page 1 of 1 1


Moderator:  Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart 
Hop to:
Shout Box

Who's Online
0 registered and 541 anonymous users online.
Newest Members
ManuvdWielNL, Sir_Barrington, batdk82, StuTheCoder, M_Moore
17887 Registered Users

Generated in 0.154 seconds in which 0.091 seconds were spent on a total of 12 queries. Zlib compression enabled.

Search the board with:
superb Board Search
or try with google:
Google
Web kixtart.org