Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 |

 

  Вопрос: Нужна помощь, VBS, выбор аккаунтов по ExpirationDa Добавлено: 18.06.11 11:07  

Автор вопроса:  admkey
Всех приветствую, прошу помощи ибо сам уже голову сломал в чем проблема, есть задача выбирать учетки из OU с истекающим сроком действия в текущий день , нарыл скрипт, но не могу заставить работать операторы <> и < может есть определенный синтаксис написания операторов неравенств, сам с vbs только начинаю разбираться.
On Error Resume Next

dtmCurrentDate = date()

Set objNewOU = GetObject("LDAP://OU=test,OU=office,DC=corp,DC=pol,DC=ru")
Set objOldOU = GetObject("LDAP://OU=office,DC=corp,DC=pol,DC=ru")

objOldOU.Filter = Array("User")

For Each objUser in objOldOU

dtmAccountExpiration = objUser.AccountExpirationDate
If Err.Number <> -2147467259 OR dtmAccountExpiration <> #1/1/1970#  and dtmAccountExpiration < dtmCurrentDate Then
   objUser.AccountDisabled = True
   objUser.msExchHideFromAddressLists = True
   objUser.SetInfo
   strUserPath = objUser.ADSPath
   strNewContainer.MoveHere strUserPath, vbNullString
    objNewOU.MoveHere objUser.ADsPath, vbNullString
Next


Заранее благодарю.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #1 Добавлено: 18.06.11 20:00
Формально вроде правильно. Он что, в блок IF не заходит?
Ну, дык, выведи условия блока в отладку.

Ответить

Номер ответа: 2
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #2 Добавлено: 18.06.11 20:03
Кроме того, "End If" пропущен.

Ответить

Номер ответа: 3
Автор ответа:
 admkey



Вопросов: 1
Ответов: 2
 Профиль | | #3 Добавлено: 19.06.11 08:29
Вчера обнаружил, что если в if несколько условий то выполняется только последнее, и без логически операторов неравенство "<>" тоже выполняется на ура, может можно как-то пошагово выполнить все блоки в IF в обход OR и AND?
подскажите как отладку провести.
End If в теле сообщения пропустил, в рабочем коде есть, спасибо.

Ответить

Номер ответа: 4
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #4 Добавлено: 19.06.11 09:06
Уж не хочешь ли ты сказать, что скрипт пишешь в блокноте, сохраняешь с расширением vbs, запускаешь и пребываешь в ступоре типа "чё-за-фигня"? Подойдет любой vba-редактор. Открой хотя бы word или excel, жми alt+F11. Вставь пустой модуль, в нем и пиши процедуру:
  1.  
  2. Sub MyExpiration()
  3. ' тра-ляля
  4. End Sub


Ставь точки останова, проходи пошагово, отслеживай значения в окнах watch, debug.print.
Может логика условий требует правильных скобок.
Вообщем, ищи ошибку.

Ответить

Номер ответа: 5
Автор ответа:
 admkey



Вопросов: 1
Ответов: 2
 Профиль | | #5 Добавлено: 21.06.11 04:21
всем спасибо, разобрался, ниже правильный вариант
  1.  
  2. If Err.Number <> -2147467259 And CStr(dtmAccountExpiration) <> "01/01/1970" And CStr(dtmAccountExpiration) <> "01/01/1601 03:00:00" And CStr(dtmAccountExpiration) <> "01.01.1601 8:00:00" And CStr(dtmAccountExpiration) <> "01.01.1970" And dtmAccountExpiration < dtmCurrentDate Then

Ответить

Номер ответа: 6
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #6 Добавлено: 21.06.11 05:56
Правильно кастовать строку к дате, а не наоборот. Впрочем, тебе виднее.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам