Benutzer mit den meisten Antworten
Alle Rechner der AD abfragen ob ein bestimmter User in der lokalen Admin Gruppe ist

Frage
-
Hallo,
habt ihr eine Idee wie man das anstellen kann, das eine Abfrage über eine komplette AD läuft, welche die lokalen Gruppe der Administratoren der Clients nach einem bestimmeten User durchsucht ?
Es handelt sich um ca. 900 Clients ^^
Leider habe ich noch keine vernünftigen Ansatz :-(
Wäre super wenn ihr mir helfen könntet.
Gruß
Uwe
Antworten
-
Am 10.04.2015 schrieb Geo_Uma:
Aber ich glaube das ist sogar schon eine Spur zuviel ^^Ich dachte das würde per WMI funktionieren um das Ergebniss eventuell zusätzlich in einer Listbox sichtbar zumache, wenn man einen Rechner explizit auswählt
Du kannst natürlich auch jeden Computer abfragen, in meinem Code ging
es ja nur um den lokal verwendeten. Die abgefragten Rechner dann mit
dem Ergebnis der Überprüfung in einer Listbox anzeigen lassen.
Servus
Winfried
Gruppenrichtlinien
HowTos zum WSUS Package Publisher
WSUS Package Publisher
HowTos zum Local Update Publisher
NNTP-Bridge für MS-Foren- Als Antwort markiert Geo_Uma Dienstag, 14. April 2015 08:03
Alle Antworten
-
Am 10.04.2015 schrieb Geo_Uma:
habt ihr eine Idee wie man das anstellen kann, das eine Abfrage über eine komplette AD läuft, welche die lokalen Gruppe der Administratoren der Clients nach einem bestimmeten User durchsucht ?
Gegenfrage: Was möchtest Du damit erreichen? Soll der User in der
Gruppe dann gelöscht werden?
Servus
Winfried
Gruppenrichtlinien
HowTos zum WSUS Package Publisher
WSUS Package Publisher
HowTos zum Local Update Publisher
NNTP-Bridge für MS-Foren -
Am 10.04.2015 schrieb Geo_Uma:
im Grunde ja.
Das löschen ist sehr einfach mit Hilfe von Group Policy Preferences zu
erledigen. Sieh dir diesen Artikel an, das Beispiel sollte helfen:
http://www.gruppenrichtlinien.de/artikel/verwaltung-der-lokalen-administratoren/Im ersten Schritt soll aber nur Festgestellt werden auf welchen Maschinen die Zugehörigkeit besteht.
Hier ein bisschen Code, Du wirst sicherlich etwas anfangen können damit.
Private Function blnUserInGroup() As Boolean blnUserInGroup = False Try 'blnUserInGroup = False, Benutzerobjekt ist nicht in der Gruppe der lokalen Administratoren oder Netzwerkkonfigurations-Operatoren vorhanden! 'Achtung! Keine Suche in evtl. vorhandenen Gruppen! Dim deComputer As DirectoryEntry = GetComputerEntry(strComputername) Dim strGruppen As String() = Split("Netzwerkkonfigurations-Operatoren;Administratoren", ";", -1, CompareMethod.Text) Dim i As Integer = 0 For i = 0 To UBound(strGruppen) Dim deGroup As DirectoryEntry = GetGroupByName(deComputer, strGruppen(i)) 'Mitglieder der Gruppen auslesen.' Dim groupMembers As List(Of DirectoryEntry) = GetGroupMembers(deGroup) For Each Member As DirectoryEntry In groupMembers If Member.Name.ToString = strUsername Then blnUserInGroup = True deGroup.Dispose() deComputer.Dispose() Return blnUserInGroup End If Next Next i Catch ex As Exception MsgBox(ex.Source & " blnUserInGroup " & ex.Message, MsgBoxStyle.Critical) End Try End Function Public Function GetGroupMembers(ByVal deGroup As DirectoryEntry) As List(Of DirectoryEntry) GetGroupMembers = Nothing Dim EventLog1 As New System.Diagnostics.EventLog() EventLog1.Source = "IPChanger" Try Dim members As IEnumerable = CType(deGroup.Invoke("members", Nothing), IEnumerable) Dim r As New List(Of DirectoryEntry)() For Each o As Object In members Dim deMember As DirectoryEntry = New DirectoryEntry(o) r.Add(deMember) Next Return r Catch ex As Exception If Not Diagnostics.EventLog.SourceExists("Meinprogramm") Then Diagnostics.EventLog.CreateEventSource("MeinProgramm", "Anwendung") End If EventLog1.WriteEvent(New EventInstance(1, 1), New String() {ex.Source & " GetGroupMembers " & ex.Message}) End Try End Function Public Function GetGroupByName(ByVal DE As DirectoryEntry, ByVal Groupname As String) As DirectoryEntry GetGroupByName = Nothing 'get admin group info' Dim EventLog1 As New System.Diagnostics.EventLog() EventLog1.Source = "MeinProgramm" Try Dim deGroup As DirectoryEntry = DE.Children.Find(Groupname, "group") Return deGroup Catch ex As Exception If Not Diagnostics.EventLog.SourceExists("MeinProgramm") Then Diagnostics.EventLog.CreateEventSource("MeinProgramm", "Anwendung") End If EventLog1.WriteEvent(New EventInstance(1, 1), New String() {ex.Source & " GetGroupByName " & ex.Message}) End Try End Function Public Function GetComputerEntry(ByVal Computername As String) As DirectoryEntry GetComputerEntry = Nothing 'create directory entry connection to the remote machine' Dim EventLog1 As New System.Diagnostics.EventLog() EventLog1.Source = "IPChanger" Try Dim deComputer As New DirectoryEntry("WinNT://" + Computername + ",computer") deComputer.RefreshCache() Return deComputer Catch ex As Exception If Not Diagnostics.EventLog.SourceExists("MeinProgramm") Then Diagnostics.EventLog.CreateEventSource("Meinprogramm", "Anwendung") End If EventLog1.WriteEvent(New EventInstance(1, 1), New String() {ex.Source & " GetComputerEntry " & ex.Message}) End Try End Function
Ist nicht ausschließlich von mir, dieses Forum hier hat mir auch
geholfen das zum Laufen zu bekommen. ;)Ist der Benutzer in der Gruppe, kannst Du eine Textdatei auf einer
Freigabe erstellen oder sonstwas machen. Verteilen kannst Du das
Programm ebenfalls per GPP als geplante Aufgabe. Dann wird es
regelmässig ausgeführt.
Servus
Winfried
Gruppenrichtlinien
HowTos zum WSUS Package Publisher
WSUS Package Publisher
HowTos zum Local Update Publisher
NNTP-Bridge für MS-Foren -
Vielen Dank ich werde mir das mal in ruhe zu gemühte führen :-)
Aber ich glaube das ist sogar schon eine Spur zuviel ^^Ich dachte das würde per WMI funktionieren um das Ergebniss eventuell zusätzlich in einer Listbox sichtbar zumache, wenn man einen Rechner explizit auswählt
-
Am 10.04.2015 schrieb Geo_Uma:
Aber ich glaube das ist sogar schon eine Spur zuviel ^^Ich dachte das würde per WMI funktionieren um das Ergebniss eventuell zusätzlich in einer Listbox sichtbar zumache, wenn man einen Rechner explizit auswählt
Du kannst natürlich auch jeden Computer abfragen, in meinem Code ging
es ja nur um den lokal verwendeten. Die abgefragten Rechner dann mit
dem Ergebnis der Überprüfung in einer Listbox anzeigen lassen.
Servus
Winfried
Gruppenrichtlinien
HowTos zum WSUS Package Publisher
WSUS Package Publisher
HowTos zum Local Update Publisher
NNTP-Bridge für MS-Foren- Als Antwort markiert Geo_Uma Dienstag, 14. April 2015 08:03