python wmi: медленное объединение пользователей и групп на удаленном ПК
Проблема: Мне нужно получить информацию о пользователях на удаленной машине (в моем случае Windows Server 2003), включая группы, в которых каждый пользователь является членом. Я стараюсь делать это через WMI. Я быстро получаю пользователей, а также группы. Но объединение пользователей с группами происходит очень медленно. Почти 20 секунд каждый запрос на ассоциацию...
def main():
conn = wmi.WMI(REMOTE_IP, user='admin', password='password')
# conn = wmi.WMI()
for user_wmi_info in conn.Win32_UserAccount():
print(user_wmi_info.Caption, end=" -> ")
groups = get_groups(user_wmi_info)
print(groups)
print()
@time_it("GROUPS")
def get_groups(user):
return [ group.Caption.split("\\")[-1] for group in
user.associators(wmi_result_class="Win32_Group")
]
if __name__ == "__main__":
main()
output:
SSS\user1 -> Execution time in GROUPS: 0:00:19.548631
['Remote Desktop Users', 'inet_usr']
SSS\admin1 -> Execution time in GROUPS: 0:00:19.178553
['Administrators', 'Remote Desktop Users', 'inet_usr']
SSS\BackUp -> Execution time in GROUPS: 0:00:19.276671
['Administrators']
SSS\user2 -> Время выполнения in GROUPS: 0:00:19.099093
['Users', 'Пользователи удаленного рабочего стола']
...
Если я выполняю те же действия на локальной машине, время, затраченное на выполнение, составляет менее секунды. Я уже подумываю о том, чтобы сделать клиент для удаленного компьютера, куда я буду отправлять запросы на выполнение команд, но я надеюсь на вашу помощь.
Как я могу ускорить ассоциацию?)