-1

現在、この VBS は、WMI に MAke、モデル、シリアル番号などの特定の詳細を照会します。次に、それらを特定のレジストリ キーの場所に配置します。

現在、それが実行されているローカル マシンに対して実行されます。これを更新してテキスト ファイルをループし、リモート マシンに対して実行するにはどうすればよいでしょうか。Active Directory から約 1000 台のマシンを取得したい場合は、それらをテキスト ファイルに入れ、それらに対して以下のスクリプトを 1 回実行します。

'**************************************************************
'* 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 
4

1 に答える 1

0

SOで簡単に検索すると、必要な部分が得られます。最初に、ファイルを読み取り、それを 1 行ずつループする必要があります。

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

警告

簡潔にするために、変数を宣言したり、ファイルが存在するかのような簡単なエラーチェックを行ったりする努力はしませんでした。繰り返しになりますが、簡単な検索を行うと、これらの問題に対処することを強くお勧めします。

于 2014-08-29T13:21:00.233 に答える