searchnetwork机器注册表的关键

时间:2016-06-08 12:57:01

标签: vba excel-vba excel

重写手头的任务,今天给了我一个奇怪的任务(对我来说很奇怪)。我需要创建一个带有按钮的电子表格,该按钮将嵌入并执行以下功能

1扫描域中的计算机服务器所有机器等获取其名称和

2使用已找到的计算机的名称填充excel表及其扫描的月份(我将为此查找AD并填充B列)(已完成)

3扫描每台机器的特定版本的软件(已安装),版本在hkey_local_machines \ software \ wow6432node \ Microsoft \ windows \ currentversion \ specific key(tbh任何注册表项都可以,因为我可以随时编辑)

4使用找到的版本更新电子表格列(即C) 现在,我有20个域名全部空中播放,所有机器和ips都不同,所以这将使用域管理员权限单独运行

我找到了下面的代码,但由于我不是每天都使用vba等,所以不知道如何编辑它以反映我的要求

    Sub Macro1()
'SearchAD.vbs
On Error Resume Next
 ' Connect to the LDAP server's root object
 'Set objFSO = CreateObject("Scripting.FileSystemObject")
 Set objRootDSE = GetObject("LDAP://RootDSE")
 strDNSDomain = objRootDSE.Get("defaultNamingContext")
 strTarget = "LDAP://" & strDNSDomain
 wscript.Echo "Starting search from " & strTarget
 Dim x As Long
 'outFile = "C:\Users\name\Desktop\Computers.csv"
 'Set objFile = objFSO.CreateTextFile(outFile, True)

 ' Connect to Ad Provider
 Set objConnection = CreateObject("ADODB.Connection")
 objConnection.Provider = "ADsDSOObject"
 objConnection.Open "Active Directory Provider"

 Set objCmd = CreateObject("ADODB.Command")
 Set objCmd.ActiveConnection = objConnection

' Show only computers
 objCmd.CommandText = "SELECT Name, ADsPath FROM '" & strTarget & "' WHERE      objectCategory = 'computer'"

' or show only users
 'objCmd.CommandText = "SELECT Name, ADsPath FROM '" & strTarget & "' WHERE    objectCategory = 'user'"

' or show only groups
'objCmd.CommandText = "SELECT Name, ADsPath FROM '" & strTarget & "'        WHERE           objectCategory = 'group'"

 Const ADS_SCOPE_SUBTREE = 2
 objCmd.Properties("Page Size") = 100
 objCmd.Properties("Timeout") = 30
 objCmd.Properties("Searchscope") = ADS_SCOPE_SUBTREE
 objCmd.Properties("Cache Results") = False

 Set objRecordSet = objCmd.Execute

 ' Iterate through the results
objRecordSet.MoveFirst
 x = 4
 Do Until objRecordSet.EOF
    scomputername = objRecordSet.Fields("Name")
    'wscript.Echo sComputerName
    'objFile.Write sComputerName & vbCrLf
    Range("A" & x).Value = scomputername
    x = x + 1
    objRecordSet.MoveNext
 Loop

 ActiveSheet.Name = Format(Now(), "mmm-yyyy")
 'objFile.Close

End Sub

目前我似乎无法找到任何搜索机器网络的方法来查找注册表项,所以任何帮助都非常感谢

0 个答案:

没有答案