我已经浏览了这个网站很多次的答案,这是我的第一个问题。伟大的社区在这里!
对于一个项目,我需要做一个Excel工作表,建议新的活动目录组的基础上,其当前的活动目录组。为此,我需要当前活动目录组的描述字段(这是一个必填字段,在我们的组织)。
因此,我已经有一个脚本,可以通过用颜色标记组来验证组的存在。这只是多步问题中的一步。这不会检索描述信息。而且到目前为止,我还没有在互联网上找到一个有效的解决方案。一个可能会使它更复杂的问题是,组位于不同的容器中。这会使可分辨名称前缀不一致。
任何帮助都是受欢迎的杨鲁
到目前为止的代码。这个代码从D列(从D2开始)读取ADgroups,并在Active Directory中搜索它。然后,如果找到一个单元格,它就用绿色标记它。
Sub ValidateGroupName()
Dim objController
Dim objGCController
Dim objConnection
Dim objCommand
Dim strADPath
Dim objRecordSet
Dim objFields
Dim Y As Integer
Dim GroupName As String
Dim ActSheet As String
Dim Descriptionname As String
ActSheet = ActiveSheet.Name
' Set up AD connection
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
Set objController = GetObject("GC:")
' Get record from AD
For Each objGCController In objController
strADPath = objGCController.ADspath
'strADDescription = objGCController.ADspath
Next
Y = 0
Do
GroupName = Sheets(ActSheet).Range("D2").Offset(Y, 0).Value
objCommand.CommandText = _
"<" & strADPath & ">;(&(objectClass=Group)" & _
"(cn=" & GroupName & "));distinguishedName;subtree"
objCommand.Properties("Page Size") = 50000
Set objRecordSet = objCommand.Execute
' What to do with results?
If objRecordSet.RecordCount = 0 Then
'change color of a cell to red
Sheets(ActSheet).Range("E2").Offset(Y, 0).Interior.Color = 255
Else
' change color of a cell to green
Sheets(ActSheet).Range("E2").Offset(Y, 0).Interior.Color = 7138816
End If
Y = Y + 1
Loop Until Sheets(ActSheet).Range("D2").Offset(Y, 0).Value = ""
' Close AD connection
objConnection.Close
End Sub
我希望我的思路是正确的,但换一种方法可能会是一个更干净的解决方案。
1条答案
按热度按时间cgyqldqp1#
首先,将“description”属性添加到查询中:
第二步,如果存在组,则获取属性值,并将其写在组单元旁边,例如: