有没有办法在远程系统上检查Forefront中的registry定义?

在玩了昨天在这个线程中发现的脚本之后,我发现这个脚本完全是我所期待的。 但是,我需要在networking上的远程系统上运行这些检查。 我花了几个小时改变了脚本,但却无法让它在针对指定计算机的检查上运行。 我对脚本很陌生,所以我可能没有看到明显的错误。 任何人都可以协助吗? 任何援助将不胜感激。

运行时,脚本不会因任何错误而中断。 它会提示input系统名称,如果名称不正确或系统不在线,系统名称将会中断。 如果指定的计算机处于联机状态,脚本将继续处理echo值。 但是,返回的值是本地系统而不是远程的。

strInput = UserInput( "Enter System Name:" ) WScript.Echo "You entered: " & strInput Function UserInput( myPrompt ) If UCase( Right( WScript.FullName, 12 ) ) = "\CSCRIPT.EXE" Then WScript.StdOut.Write myPrompt & " " UserInput = WScript.StdIn.ReadLine Else UserInput = InputBox( myPrompt ) End If End Function strComputer = strInput Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 'Option Explicit FCS_REGKEY_ROOT = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware" Dim SCAN_KEY, SIGNATUREUPDATES_KEY Dim AV_VERSION_VALUE, AS_VERSION_VALUE, ENGINE_VERSION_VALUE, AV_DATE, AS_DATE Dim LAST_SCAN_TIME, LAST_SCAN_TYPE, INSTALL_PATH_VALUE SCAN_KEY=FCS_REGKEY_ROOT & "\Scan" SIGNATUREUPDATES_KEY = FCS_REGKEY_ROOT & "\Signature Updates" INSTALL_PATH_VALUE= FCS_REGKEY_ROOT & "\InstallLocation" AV_VERSION_VALUE= SIGNATUREUPDATES_KEY &"\AVSignatureVersion" AS_VERSION_VALUE= SIGNATUREUPDATES_KEY &"\ASSignatureVersion" ENGINE_VERSION_VALUE= SIGNATUREUPDATES_KEY &"\EngineVersion" AV_DATE= SIGNATUREUPDATES_KEY &"\AVSignatureApplied" AS_DATE= SIGNATUREUPDATES_KEY &"\ASSignatureApplied" LAST_SCAN_TIME= SCAN_KEY & "\LastScanRun" LAST_SCAN_TYPE= SCAN_KEY & "\LastScanType" '************ MAIN ************ Dim AV_Version, AS_Version, EngineVersion, ProductVersion Dim AV_BuildDate, AS_BuildDate, LastScanTime, LastScanType Dim objShell set objShell = CreateObject("WScript.Shell") '============ Get current info ============ AV_Version = objShell.RegRead(AV_VERSION_VALUE) AS_Version = objShell.RegRead(AS_VERSION_VALUE) EngineVersion = objShell.RegRead(ENGINE_VERSION_VALUE) AV_BuildDate = BinaryToDate( objShell.RegRead(AV_DATE) ) AS_BuildDate = BinaryToDate( objShell.RegRead(AS_DATE) ) ProductVersion = GetProductVersion(INSTALL_PATH_VALUE) LastScanTime = BinaryToDate( objShell.RegRead(LAST_SCAN_TIME) ) LastScanType = GetScanType( objShell.RegRead(LAST_SCAN_TYPE) ) '============ Display summary info ============ WScript.echo "Microsoft Forefront Client Security version: " & ProductVersion WScript.echo "Engine version: " & EngineVersion WScript.echo "Antivirus Definition: Version " & AV_Version & " created on " & AV_BuildDate WScript.echo "Antispyware Definition: Version " & AS_Version & " created on " & AS_BuildDate WScript.echo "Last scan: " & LastScanTime & " (" & LastScanType & ")" '************ END MAIN ************ '=============================================================== 'Function BinaryToDate will covert a binary DATE_TIME structure into a Variant date set to the local time ' Parameter: bArray - a VARIANT array of bytes ' Return: a VARIANT date Function BinaryToDate(bArray) dim Seconds,Days,dateTime Set dateTime = CreateObject("WbemScripting.SWbemDateTime") Seconds = bArray(7)*(2^56) + bArray(6)*(2^48) + bArray(5)*(2^40) + bArray(4)*(2^32) _ + bArray(3)*(2^24) + bArray(2)*(2^16) + bArray(1)*(2^8) + bArray(0) Days = Seconds/(1E7*86400) dateTime.SetVarDate CDate(DateSerial(1601, 1, 1) + Days ), false BinaryToDate = dateTime.GetVarDate () End Function '=============================================================== 'Function GetProductVersion will query a registry key for the file location and then return the version from the filesystem ' Parameter: strRegPath - path to the registry pointing to the installation location ' Return: a VARIANT string containing the product version Function GetProductVersion(regPath) const FILE_TO_CHECK = "\msmpeng.exe" dim strFilePath, objFSO strFilePath = objShell.RegRead(regPath) & FILE_TO_CHECK Set objFSO = CreateObject("Scripting.FileSystemObject") GetProductVersion = objFSO.GetFileVersion(strFilePath) Set objFSO = Nothing End Function '=============================================================== 'Function GetScanType will return a string with the scan type that corresponds to the enum ' Parameter: iScanType - type of scan ' Return: a VARIANT string containing text type of scan Function GetScanType(iScanType) Select case(iScanType) Case 1 : GetScanType= "Quick Scan" Case 2 : GetScanType= "Full Scan" Case Else GetScanType= "Invalid Scan type" End Select End Function