从输入中列出vbs中组的成员

时间:2012-08-10 09:01:21

标签: vbscript

好的,所以我想在学校为我的项目编写一个用户管理系统。我选择了vbs,因为它必须是一种脚本语言。该脚本的一个功能是它可以列出给定组的成员。用户输入要在其中查找组的域,然后将其列在输入框中。然后,用户可以输入所选的组,该函数将该字符串提供给过程。这是不起作用的部分。我希望有人可以在这里帮助我,我已经坐了好几个小时....

'Funktion zur Verarbeitung der Gruppenverwaltung
Function gruppenVerwaltung
choice = IB ("Gruppenverwaltung" & vbCr & _
    "1. Gruppe hinzufügen" & vbCr & _
    "2. Grupe entfernen" & vbCr & _
    "3. Gruppen anzeigen" & vbCr & _
    "4. Lokale Gruppe einer globalen Gruppe zuweisen" & vbCr & _
    "5. Lokale Gruppe aus einer globalen Gruppe entfernen" & vbCr & _
    "6. Mitglieder einer Gruppe hinzufügen" & vbCr & _
    "7. Mitglieder aus einer Gruppe entfernen" & vbCr & _
    "8. Mitglieder einer Gruppe anzeigen" & vbCr & _
    "9. Zurück...")

    If choice = 3 Then
        Do
            strDomain = IBText("Domäne eingeben: ", "Input")
        Loop Until strDomain <> ""
        gruppenAnzeigen(strDomain)
    End If

    If choice = 9 Then
        main
    End If

    If choice < 1 Or choice > 9 Then
        MsgBox "Falsche Eingabe! Nochmal..."
        gruppenVerwaltung
    End If

    If choice = 8 Then
    strDomain = IBText("Domäne der Gruppe eingeben: ")
        Set objComputer = GetObject ("WinNT://" & strDomain)
        objComputer.Filter = Array("group")         
        For each objGruppe in objComputer   
            strText = strText & "Name:" & objGruppe.Name & vbCr                         
        Next

        Do
            strGruppe = IBText(strText & vbCr & "Gruppe eingeben: ")
        Loop Until strGruppe <> ""
        strGruppe = "LDAP://CN=" & strGruppe
        mitgliederAnzeigen(strGruppe)
    End If
End Function

'Prozedur zur Anzeige aller Mitglieder einer Gruppe
Sub mitgliederAnzeigen(strGruppe)
/////////////////////////////////////////////////////////////////
Set objGroup = GetObject(strGruppe)   
For Each Member in objGroup.Members 
    WScript.echo Member.cn & " ; " & Member.displayName  
Next
End Sub

所以基本上功能(gruppenVerwaltung)就是菜单所在的位置。如果用户选择条目8,则他必须输入域,然后在列表中输入该域中的所有组(输入框)。然后他可以选择一个存储为字符串的组。

当函数调用过程(mitgliederAnzeigen)时,它会尝试在保存组名的字符串上应用GetObject。这是我得到一个错误“无法找到域或无法建立连接”或沿着这些行的东西(抱歉错误消息是德语,错误代码是8007054B)。

我已经在线查看了代码,但是用户总是必须在代码中手动更改组(具有“LDAP \ cn = groupName”的东西,我尝试使用此样式格式化字符串,但显然它也不起作用。< / p>

感谢您的帮助!

编辑:好了,现在我将我的电脑升级为域控制器,自升级后我得到了一个不同的错误(代码80072020)。它出现在与之前相同的行中(设置objGroup = GetObject(strGruppe))

1 个答案:

答案 0 :(得分:0)

虽然这不使用问题中采用的方法,但net.exe实用程序会操纵组。可以通过Run方法从vbscript调用net.exe。 有关更多信息:

C:&GT;网络帮助小组

NET GROUP必须在域控制器上运行。

关于在VBscript中获取结果,请参阅How to redirect command-Line output