Domänen-PCs nach lokalen Admins durchsuchen
Hallo zusammen!!!
Ich habe in meiner Firma mehrere Domänen, in denen einige User auf ihren PCs lokale Administratoren sind. Diese PCs würde ich gerne in einem Duchlauf/Domäne nach den eingetragenen lokalen Admins "scannen", um eine Übersicht zu bekommen und den Usern mit falscher Berechtigung diese zu nehmen.
Kennt Ihr da eine Möglichkeit?
Gruß, Tobias!
Ich habe in meiner Firma mehrere Domänen, in denen einige User auf ihren PCs lokale Administratoren sind. Diese PCs würde ich gerne in einem Duchlauf/Domäne nach den eingetragenen lokalen Admins "scannen", um eine Übersicht zu bekommen und den Usern mit falscher Berechtigung diese zu nehmen.
Kennt Ihr da eine Möglichkeit?
Gruß, Tobias!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 88770
Url: https://administrator.de/contentid/88770
Ausgedruckt am: 13.11.2024 um 22:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo Tobias,
ein Schnipsel aus dem Microsoft Fundus, den du ggfs. an deine Bedürfnisse anpassen kannst.
List Members of a Local Group
Grüße,
gemini
ein Schnipsel aus dem Microsoft Fundus, den du ggfs. an deine Bedürfnisse anpassen kannst.
List Members of a Local Group
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
strGroup = "Administrators"
WScript.Echo "Computer: " & strComputer
Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group")
WScript.Echo " Administrators group members:"
For Each objMember In objGroup.Members
WScript.Echo " " & objMember.Name
Next
Grüße,
gemini
Hi Tobias,
um das automatisiert auslesen zu können (erst einmal rein theoretisch) müsste auf jedem der Rechner das gleiche OS installiert sein, da sonst die Pfade nicht mehr unbedingt stimmen müssten.
Beispiel:
98 und Vista
Welches OS hast du denn, dann kann man auch eine Lösung erarbeiten.
Gruß darkuser
edit:
ansonsten schau mal hier, ob das so funktioniert
&query=administratoren
um das automatisiert auslesen zu können (erst einmal rein theoretisch) müsste auf jedem der Rechner das gleiche OS installiert sein, da sonst die Pfade nicht mehr unbedingt stimmen müssten.
Beispiel:
98 und Vista
Welches OS hast du denn, dann kann man auch eine Lösung erarbeiten.
Gruß darkuser
edit:
ansonsten schau mal hier, ob das so funktioniert
&query=administratoren
Hi Tobi,
ich würde eine versteckte Freigabe erstellen und dem User "Jeder" VOllzugriff geben. Nun zum Script:
Diese Zeile würde ich in ein vorhandenes Loginscript (User- / Computerskript für 1-2 Wochen einbinden und gut ist.
@Biber
Hab ich doch auch mal ein Onliner geschrieben. :-P
Gruss,
Dani
ich würde eine versteckte Freigabe erstellen und dem User "Jeder" VOllzugriff geben. Nun zum Script:
@echo off & setlocal
if not exist "\\server\freigabe$"\%computername%" net localgroup administratoren >> "\\server\freigabe\%computername%.txt"
@Biber
Hab ich doch auch mal ein Onliner geschrieben. :-P
Gruss,
Dani
Ich nehme an, das Inventarisierungen oder Managementsoftware das auslesen kann.
Zum Basteln hab ich leider momentan keine Zeit aber eine Skizze gebe ich dir gerne.
Das Script könnte als Logonscript ausgeführt werden. Die Ausgabe als Textdatei (benannt nach dem Computernamen) in einer Freigabe auf einem Server abgelegt werden.
Möglich wäre auch, den Client per Richtlinie einen entspr. Registrierungsschlüssel unter RunOnce mitzugeben. Damit würde es je Client nur einmal ausgeführt werden.
Grüße,
gemini
hab nur leider nicht sooo viel Ahnung von Visual Basic
Das ist ja auch VBScript Eine gute Gelegenheit sich mal mit der Materie zu beschäftigen.Zum Basteln hab ich leider momentan keine Zeit aber eine Skizze gebe ich dir gerne.
Das Script könnte als Logonscript ausgeführt werden. Die Ausgabe als Textdatei (benannt nach dem Computernamen) in einer Freigabe auf einem Server abgelegt werden.
Möglich wäre auch, den Client per Richtlinie einen entspr. Registrierungsschlüssel unter RunOnce mitzugeben. Damit würde es je Client nur einmal ausgeführt werden.
Grüße,
gemini
@tobias
Ich weiß zwar nicht, ob du auch so etwas gesucht hast, aber das hat laut dem entsprechendem Thread auch in einem AD funktioniert.
Gruppenzugehörigkeit der USer auslesen
VG darkuser
Ich weiß zwar nicht, ob du auch so etwas gesucht hast, aber das hat laut dem entsprechendem Thread auch in einem AD funktioniert.
Gruppenzugehörigkeit der USer auslesen
VG darkuser
@darkuser
Jose liest nur die Daten aus dem AD aus, aber nicht vom lokalen Computer
@tobias
das Skript funktioniert übers Netzwerk von deinem PC aus
Voraussetzung sollte sein, das du Adminrechte auf den PC hast
ändere in der 4. Zeile den Ordner ab -> I:\Admins
erstell in deinem Ordner eine 'Computer.txt', wo du die Hostnamen der Rechner untereinander einträgst, die du abfragen willst
funktioniert bei mir auf englischen und deutschen XP-Versionen, mit SP1 und SP2, sowie mit Win2K SP4 (deutsch)
das Ergebnis ist eine TXT-Datei mit dem Computernamen, darin enthalten alle Accounts, die in der lokalen Admin-Gruppe eingetragen sind
Jose liest nur die Daten aus dem AD aus, aber nicht vom lokalen Computer
@tobias
On Error Resume Next
Set FSObj = CreateObject("Scripting.FileSystemObject")
strPath = FSObj.GetAbsolutePathName("I:\Admins")
strCompListe = strPath & "\Computer.txt"
Set objCompFile = FSObj.OpenTextFile(strCompListe, 1)
Const wbemFlagReturnImmediately = &H10
Const wbemFlagForwardOnly = &H20
Do While Not objCompFile.AtEndOfStream
arrComputers = Array(CompName)
strComputer = objCompFile.ReadLine
Set textfile = FSObj.CreateTextFile(strPath & "\" & strComputer & ".txt")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colAccounts = objWMIService.ExecQuery("Select * From Win32_Group Where Domain ='" & strComputer & "' and SID='S-1-5-32-544'")
For Each objItem In colAccounts
strAdminGrp = objItem.Name
Next
Set objGroup = GetObject("WinNT://" & strComputer & "/" & strAdminGrp & ",group")
textfile.writeline "========================"
textfile.writeline "Request...: " & strComputer
textfile.writeline "Stand.....: " & Date
textfile.writeline "========================"
For Each objMember In objGroup.Members
textfile.writeline objMember.Name
Next
textfile.Close
Set strAdminGrp = Nothing
Set strComputer = Nothing
Loop
objCompFile.Close
Wscript.Echo "Fertig!"
Voraussetzung sollte sein, das du Adminrechte auf den PC hast
ändere in der 4. Zeile den Ordner ab -> I:\Admins
erstell in deinem Ordner eine 'Computer.txt', wo du die Hostnamen der Rechner untereinander einträgst, die du abfragen willst
funktioniert bei mir auf englischen und deutschen XP-Versionen, mit SP1 und SP2, sowie mit Win2K SP4 (deutsch)
das Ergebnis ist eine TXT-Datei mit dem Computernamen, darin enthalten alle Accounts, die in der lokalen Admin-Gruppe eingetragen sind
@Dani (mit Verweis auf Iwan)
...
*räusper*
...
Okay, prima...
Phase 2: Nächste Woche üben wir funktionierende Oneliner...
Schönes Wochenende
Biber
Hab ich doch auch mal ein Onliner geschrieben. :-P
Der Zweizeiler ist zwar gewissermaßen online, aber ich glaube.... *rumdrucks*...
*räusper*
...
Okay, prima...
Phase 2: Nächste Woche üben wir funktionierende Oneliner...
Schönes Wochenende
Biber
@Biber
*ups* Mal wieder nicht bei der Sache gewesen.
Dir kann ich das Wassser natürlich nicht reichen, aber ich geb mir Mühe. Ich guck eben lieber dir zu....
Ich bin dabei...
Thx & dir und deinen Bekannten auch
Dani
*ups* Mal wieder nicht bei der Sache gewesen.
Dir kann ich das Wassser natürlich nicht reichen, aber ich geb mir Mühe. Ich guck eben lieber dir zu....
Ich bin dabei...
Thx & dir und deinen Bekannten auch
Dani
@Dani's 1-Liner
Falls es auch ein paar Zeilen mehr sein dürften, ließe sich das Ganze (bei ansonsten gleicher Vorgangsweise) auch noch etwas übersichtlicher als .csv-Datei ausgeben:
Grüße
bastla
Falls es auch ein paar Zeilen mehr sein dürften, ließe sich das Ganze (bei ansonsten gleicher Vorgangsweise) auch noch etwas übersichtlicher als .csv-Datei ausgeben:
@echo off & setlocal
set "Ziel=\\Server\Freigabe$"
set "Comp=%Ziel%\ComputerErledigt.txt"
set "Adm=%Ziel%\AdminKonten.csv"
::Aktueller Computer bereits erfasst?
if exist "%Comp%" findstr /i "%ComputerName%" "%Comp%">nul && goto :eof
::Zeilennummer, ab welcher die Konten ausgegeben werden (= nach Trennzeile "---------------", bei XP Pro zB Zeile 6), ermitteln
set Nr=
for /f "delims=:" %%i in ('net localgroup administratoren^|findstr /b /n /c:"-------"') do if not defined Nr set Nr=%%i
::Falls die Zeile nicht gefunden wurde, Batch beenden
if not defined Nr goto :eof
::Ausgabe der gesuchten Daten
for /f "delims=" %%a in ('net localgroup administratoren^|more +%Nr%^|findstr /v /c:"Der Befehl wurde "') do echo %ComputerName%;%%a >>"%Adm%"
::Eintragen des Computers als "erledigt"
echo %ComputerName% >>"%Comp%"
bastla