0

わかりましたので、学校でのプロジェクト用にユーザー管理システムを書きたいと思います。スクリプト言語である必要があったため、vbs を選択しました。このスクリプトの機能の 1 つは、特定のグループのメンバーを一覧表示できることです。ユーザーがグループを検索するドメインを入力すると、入力ボックスに一覧表示されます。ユーザーは選択したグループを入力でき、関数はこの文字列をプロシージャに渡します。これは機能していない部分です。誰かがここで私を助けてくれることを願っています.私は何時間もこれに座っていました....

'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」を使用して、このスタイルで文字列をフォーマットしようとしましたが、どうやらうまくいきません。

助けてくれてありがとう!

編集: OK、PC をドメイン コントローラーにアップグレードしました。アップグレード後、別のエラーが発生しました (コード 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 に答える