2014-08-29 42 views
-1

现在,此VBS将向WMI查询特定详细信息,例如制造商,型号,序列号。然后将它们放入特定的注册表项位置。用于在文本文件中运行agaisn't系统的VBS脚本 - McAfee系列号

现在它运行在它运行的本地机器上。这怎么可能被更新来循环通过一个文本文件并运行在远程机器上。如果我想采取从Active Directory围绕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 
+0

这些应该很容易搜索。 [按行读取文件](http://stackoverflow.com/questions/15533214/how-do-i-read-a-file-line-by-line-in-vb-script) – Matt 2014-08-29 13:22:14

回答

0

一个简单的搜索在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 

警告

为了简便起见我没有作出任何努力宣告我的变量或做简单的错误检查,如文件存在。再次,一些简单的搜索可以帮助你解决那些我强烈建议你解决的问题。

相关问题