среда, 6 марта 2013 г.

Запись в файл MAC-адреса


'17/02/2013 ITVolna
'Скрипт записи в файл новых значений пары - имя пк и его MAC
'Скрипт содержит две функции:macfunc - определения MAC и MACWrite - Записи MAC в файл
'
'
set WshShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName 'Имя ПК

' функция опеределения MAC адреса сетевой карты, в функцию должно передаваться имя ПК
Function macfunc(strComputer)
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
'MAC адрес
   strMACAddress = IPConfig.MACAddress(i)
   macfunc=strMACAddress 'Возвращенное значение
Next
End Function

'Объявляем функцию записи в файл МАК адреса
Function MACWrite()
  Dim fso, f
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("C:\Temp\writefile.txt",8) '1-чтение 2-для записи 8 - дозапись
  ' Записать строку с переводом на новую строку.
  f.WriteLine(strComputer & ": "&+macfunc(strComputer)) 'Пишем имя ПК и MAC
  f.Close
End Function

' Процедура которая открывает файл и ищет в нем строку с именем ПК и MAC адресом, если MAC Машины и имя ПК совпадает со значением из файла, то выходим из скрипта
' Если такого МАК адреса нет, то пишем в файл MAC данной машины
Sub OpenFileScan()
  Dim fso, f, readmac
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("C:\Temp\writefile.txt",1) '1-чтение 2-для записи 8 - дозапись
If fso.FileExists("C:\Temp\writefile.txt") Then 'Файл со списком ПК
set readfile = FSO.OpenTextFile("C:\Temp\writefile.txt",1) 'Чтаем файл
While Not readfile.AtEndOfStream 'Читаем построчно, пока не конец файла
    readmac=readfile.ReadLine
s=strComputer & ": "&+macfunc(strComputer)
If s=readmac Then ' Если имя ПК и соответствующий ему мак адрес в файле есть то выходим из скрипта
WScript.Quit 'выход
End If
Wend
MACWrite() ' Вызываем функцию записи в файл Имя ПК и его MAC адреса
End If
End Sub

OpenFileScan()