Настройка: У меня под рукой пользовательский объект, через win32com.client.Dispatch('ADsNameSpaces')
, в стандартной среде Windows, с использованием ActiveState Python версии 2.6. По-видимому, методы Get()
и Put()
/ SetInfo()
являются подходящими способами для чтения и записи свойств объекта. Мой подход состоял в том, чтобы просто адаптировать примеры из Active Directory Cookbook для Python. Я могу установить другие свойства (password, sn, givenName
и т. Д.) Объекта пользователя и в противном случае активировать учетную запись, добавить ее в группы, но установка даты истечения срока действия кажется проблематичной.
В VBScript (я знаю, я знаю, это то, что в книге) вы можете сделать:
objUser.AccountExpirationDate = '12/31/2010'
objUser.SetInfo
Я также знаю, что есть отдельное свойство accountExpires
. Я могу выполнить times = objUser.Get('accountExpires')
и получить объект с .HighPart
и .LowPart
, поскольку я знаю, что информация хранится внутри, поэтому я чувствую, что на правильном пути.
Кроме того, я написал функции, которые преобразуют даты, читаемые человеком, во время эпохи Unix и оттуда в 64-битный формат времени Microsoft (интервалы в 100 наносекунд с 1 января 1601 года; сохраняются как 32-битные HighPart и 32 -бит LowPart), если это требуется.
Неудачные попытки:
1)
objUser.AcccountExpirationDate = '03/20/2010'
>>AttributeError: Property '<unknown>.AcccountExpirationDate' can not be set.
2)
objUser.Put('AccountExpirationDate', '03/20/2010')
>> File "<COMObject <unknown>>", line 2, in SetInfo
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Active Directory', u'The specified directory service attribute or value does not exist.\r\n', None, 0, -2147016694), None)
3)
times = objUser.Get('accountExpires')
print 'highpart: ' + str(times.HighPart)
# "highpart" variable computed elsewhere
times.Put('HighPart', highpart)
>>AttributeError: <unknown>.Put
Неудачные попытки проверки для производного объекта "times" и его частей (HighPart, LowPart):
1) dir()
не помог мне в попытках осмотреть объект, не выдав ничего необычного.
2) Статья "Путеводитель по интроспекции Python" (http://www.ibm.com/developerworks/library/l-pyint.html),, которая интересна, больше не дает понимания.
3) У меня много недоумения, но очень общий вид вывода из модуля inspect
; ничего не говорит "Привет, вставь в меня 32-битное целое число!"
Куда мне идти отсюда?