Как определить список компьютеров в локальной сети без перебора?
На vbs :)Set objShell = CreateObject("Shell.Application")

'Taking folder "Network" by CLSID (
'See http://safezone.cc/threads/kratkij-spravochnik-po-clsid.20350/ to list CLSIDs
Set objFolder = objShell.NameSpace("::{208D2C60-3AEA-1069-A2D7-08002B30309D}")

' Process each box in folder "Network"
For Each objItem In objFolder.Items()
  strBoxName = compName(objItem.Name)

  If (boxAvailable(strBoxName)) Then
    Call checkService(strBoxName, strService, arrayNodeploy, strMailBody)
  End If  
Next
compName, boxAvailable и checkService - внутренние процедуры
На роутере можешь спросить список активных клиентов :)