Скрипт VBS для запуска систем в текстовом файле - Серийный номер McAfee
Прямо сейчас эта VBS запрашивает WMI для определенных деталей, таких как MAke, модель, серийный номер. Затем помещает их в определенные разделы реестра.
сейчас он работает против локальной машины, на которой он работает. Как это можно обновить, чтобы циклически проходить через текстовый файл и запускаться на удаленных машинах. Если я хотел взять из активной директории около 1000 машин, поместите их в текстовый файл и один раз запустите приведенный ниже скрипт
'**************************************************************
'* VBScript to create custom registry key for ePO
'* Author:
'* Company: XXXXX
'* Usage: wscript ePO_customkeys.vbs
'*
'* Date: Comments
'*=============================================================
'* 07/14/2014 Created
'* 07/15/2014 Updated variables - Stretch
'**************************************************************
On error resume next
'**************************************************************
'* Global Variables
'**************************************************************
const HOSTNAME_NAME = "." 'declar rmote computer name; use . for local PC
const HKEY_LOCAL_MACHINE = &H80000002
const REG_KEY_PATH = "SOFTWARE\Network Associates\ePolicy Orchestrator\Agent\CustomProps"
Dim objManufacturer, objModel, objSerial
'retrieve model
Set objWMIService = GetObject("winmgmts:\\" & HOSTNAME_NAME & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( "SELECT * FROM Win32_ComputerSystem",,48)
For Each objItem in colItems
objModel = Trim(objItem.Model)
Next
'retrieve computer manufacturer, serial
Set objWMIService = GetObject("winmgmts:\\" & HOSTNAME_NAME & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( "SELECT * FROM Win32_BIOS",,48)
For Each objItem in colItems
objManufacturer = Trim(objItem.Manufacturer)
objSerial = Trim(objItem.SerialNumber)
Next
'add registry
'Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & HOSTNAME_NAME & "\root\default:StdRegProv")
'create registry key
oReg.CreateKey HKEY_LOCAL_MACHINE,REG_KEY_PATH
oReg.SetStringValue HKEY_LOCAL_MACHINE,REG_KEY_PATH,"CustomProps1",objManufacturer
oReg.SetStringValue HKEY_LOCAL_MACHINE,REG_KEY_PATH,"CustomProps2",objModel
oReg.SetStringValue HKEY_LOCAL_MACHINE,REG_KEY_PATH,"CustomProps3",objSerial
'**************************************************************
'* Additional debugging scripts
'* COMMENT THEM OUT ON PRODUCTION
'**************************************************************
'WScript.Echo "Manufacturer: " & objManufacturer & ", Model: " & objModel & ", Serial: " & objSerial
'delete key
'oReg.DeleteKey HKEY_LOCAL_MACHINE, REG_KEY_PATH
WScript.Quit
1 ответ
Простой поиск в SO даст вам ту часть, которая вам нужна. Сначала вам нужно прочитать файл и перебрать его строку за строкой.
strFilename = "C:\Temp\servers.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO .OpenTextFile(strFilename)
Do Until objFile.AtEndOfStream
' Read a single line from the file.
singleHostname = objFile.ReadLine
ProcessServer(singleHostname )
Loop
' Close the file and clean up memory
objFile.Close
Преобразуйте большую часть вашего сценария в Sub
называется ProcessServer
Function ProcessServer(pSingleServer)
' Comments and proccessing....
Set objWMIService = GetObject("winmgmts:\\" & pSingleServer& "\root\CIMV2")
' More comments and proccessing....
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & pSingleServer& "\root\default:StdRegProv")
' Still more comments and proccessing....
End Function
Предупреждение
Для краткости я не пытался объявлять свои переменные или выполнять простую проверку ошибок, например, файл существует. Опять же, некоторые простые поиски могут помочь вам с теми проблемами, которые я настоятельно рекомендую вам решить.