2012-02-01 2 views
0

Имея проблемы с простой простой задачей ... найти пользователей, которые не входят в группу локальных администраторов и удалить их ...win32net не смог удалить локального пользователя из группы

import win32net 


def BAD_DomainUsers(computer): 
    x = win32net.NetLocalGroupGetMembers(computer,"Administrators", 2) 
    for i in x[0]: 
     if i["domainandname"] == r"DOMAIN\Domain Users": 
      return True 
    return False 

def Remove_BadUsers(computer): 
    win32net.NetLocalGroupDelMembers(computer, "Administrators", r"DOMAIN\Domain Users") 

computer = "P04213" 

if BAD_DomainUsers(computer): Remove_BadUsers(computer) 

Это возвращает ошибка:

win32net.NetLocalGroupDelMembers(computer, "Administrators", r"DOMAIN\Domain Users") 
pywintypes.error: (1387, 'NetLocalGroupDelMembers', 'A member could not be added to or removed from the local group because the member does not exist.') 

Но когда я перечисляю группу администраторов, достаточно уверены DOMAIN \ Пользователи домена является членом ... или иначе это не будет вызывать функцию Remove_BadUsers. Должно быть ЧТО-ТО, что мне не хватает, но я не могу понять это.

+0

Запускаете ли вы свой скрипт под учетной записью администратора? Может быть, это просто проблема с правами? –

+0

@DonQuestion Yep. Моя учетная запись является администратором домена, поэтому должно быть хорошо ... действительно раздражает проблема! arg –

ответ

0

Я хорошо знаю, что этот пост старый, но это лучший результат в поисках, и я ненавижу ответы, которые не отвечают на поставленный вопрос. Итак, вот ответ:

win32net.NetLocalGroupDelMembers ожидает список строк для его третьего аргумента , например. win32net.NetLocalGroupDelMembers (компьютер, «Администраторы», [r «DOMAIN \ Domain Users»])

0

ОК ...

Это было завышено. Ответ заключается в использовании подпроцесса или какой-либо метод для вызова командной строки оператор и оператор командной строки ...

net localgroup administrators "DOMAIN\Domain Users" /delete 

Я просто сделал команду в CMD строки и он побежал успешно. Классический.

+0

следует помнить, что подпроцесс может не запускать команды юникода, поэтому пользователи с именами юникода могут вызвать проблемы с этим методом. –