0

好的,所以我想为我在学校的项目编写一个用户管理系统。我选择了 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”的东西,我尝试过以这种样式格式化字符串,但显然它也不起作用。

谢谢你的帮助!

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

4

1 回答 1

0

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

C:> 网络帮助组

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

关于在 VBscript 中获取结果,请参见如何重定向命令行输出

于 2012-08-23T13:09:27.753 回答