Inhalt der Gruppe der lokalen Administratoren per WMI

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
knumskull
User
Beiträge: 34
Registriert: Dienstag 29. September 2009, 08:07
Kontaktdaten:

Hallo,

ich such nach einer Möglichkeit, wie ich den Inhalt der Gruppe der lokalen Administratoren per remote auslesen kann.

eine Möglichkeit, die mir da eingefallen ist, ist das ganze per WMI zu versuchen.
Leider tue ich mich da ein wenig schwer. So richtig komme ich nicht dahinter.

Habe folgende Ansätze:

per WMI:

Code: Alles auswählen

import win32com.client

strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")

colItems = objSWbemServices.ExecQuery("SELECT * FROM Win32_GroupUser WHERE domain='"+strComputer+"'")

for objItem in colItems:
    if objItem.GroupComponent != None:
        print "GroupComponent:" + ` objItem.GroupComponent`
    if objItem.PartComponent != None:
        print "PartComponent:" + ` objItem.PartComponent`


wenn ich das ohne den "domain"-Parameter ausführe, findet er alle User/Gruppen der Domäne. Das ist fatal.

Meine andere Variante ist per adsi ? (glaub ich zumindest :-))

Code: Alles auswählen

import win32com.client

def f_GetAdminUsers(RemoteComputer):
	objGroup = win32com.client.GetObject("WinNT://"+RemoteComputer+"/Administratoren")
	for objMember in objGroup.Members:
		print objMember.Name

# MAIN
f_GetAdminUsers(strComputer)
Hier bekomme ich nur ne Fehlermeldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\efroem1\Desktop\Eclipse-Workspace\CAE-Support\src\WMI_quick.py", line 44, in <module>
f_GetAdminUsers(strComputer)
File "C:\Dokumente und Einstellungen\efroem1\Desktop\Eclipse-Workspace\CAE-Support\src\WMI_quick.py", line 38, in f_GetAdminUsers
objGroup = win32com.client.GetObject("WinNT://"+RemoteComputer+"/Microsoft/Administratoren")
File "c:\Python26\lib\site-packages\win32com\client\__init__.py", line 72, in GetObject
return Moniker(Pathname, clsctx)
File "c:\Python26\lib\site-packages\win32com\client\__init__.py", line 87, in Moniker
moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
pywintypes.com_error: (-2147463164, 'OLE error 0x80005004', None, None)
Ich kann damit leider nicht viel anfangen. Wäre super, wenn jemand eine Idee hat.
Ich bin natürlich auch offen für jede weitere Möglichkeit, die Benutzer abzufragen.

LG Knums
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Habe gerade das winsys-Modul von Tim Golden gefunden, damit ist das ein Kinderspiel:

Code: Alles auswählen

from winsys import accounts
admins = accounts.local_group("Administrators")
for user in admins:
    print user
Bisher habe ich schon sein active_directory-Modul und mal das wmi-Modul benutzt. AD finde ich ganz intuitiv, aber wmi ist einfach unübersichtlich. Zum Überblick über das ADS ist die MMC mit dem Snap-In "Active Directory Users and Computers" unentbehrlich. Diese blendet allerdings dann auch Merkmale ein, die eben nicht per AD, sondern nur per wmi (oder evtl per winsys) abfragbar sind.
knumskull
User
Beiträge: 34
Registriert: Dienstag 29. September 2009, 08:07
Kontaktdaten:

Super,

das klingt schonmal ganz gut. Kann ich damit auch Remote-Abfragen durchführen?
Ich würde halt gern checken, ob ein bestimmter Benutzer in der Gruppe der lokalen Administratoren enthalten ist.

Allerdings wenn der Eintrag nicht drin ist, habe ich keine Adminrechte.

Also eigentlich möchte ich auch nur checken, ob die Gruppe in dem Computer eingetragen ist, oder ob ich überhaupt Adminrechte besitze.

ne Idee?
LG Knums
Antworten