1

Тема: VBS: Блокировка пользователя в Домене

Очень интересно как можно организовать такое, если даже есть куча ветвей где лежат сами пользователи!
Как им образом можно такое организовать? Желательно что б из файла. Зарание спасибо:)

2

Re: VBS: Блокировка пользователя в Домене

afteroot пишет:

Очень интересно как можно организовать такое, если даже есть куча ветвей где лежат сами пользователи!
Как им образом можно такое организовать?..

В чём, собственно, затруднение?

3

Re: VBS: Блокировка пользователя в Домене

Dmitrii пишет:
afteroot пишет:

Очень интересно как можно организовать такое, если даже есть куча ветвей где лежат сами пользователи!
Как им образом можно такое организовать?..

В чём, собственно, затруднение?

Не могу понять как это просто организовать, я не силен в ВБ скриптах!

4

Re: VBS: Блокировка пользователя в Домене

Загрузите и читайте примеры отюда. А на Ваш вопрос можно будет внятно ответить не раньше, чем Вы его внятно сформулируете.

5

Re: VBS: Блокировка пользователя в Домене

alexii пишет:

Загрузите и читайте примеры отюда. А на Ваш вопрос можно будет внятно ответить не раньше, чем Вы его внятно сформулируете.

А что не понятно в том что я хочу найти юзера в АД и заблокировать его учетку! А имена юзеров находятся в файле *.txt

6

Re: VBS: Блокировка пользователя в Домене

Ну, не «заблокировать», а за«Блокировака»ть . При чём тут «куча ветвей» и «лежащие в них сами пользователи» тоже не понятно. Про то, где можно прочитать, буде желание — ссылку привёл выше.

7 (изменено: afteroot, 2010-11-10 19:38:26)

Re: VBS: Блокировка пользователя в Домене

alexii пишет:

Ну, не «заблокировать», а за«Блокировака»ть . При чём тут «куча ветвей» и «лежащие в них сами пользователи» тоже не понятно. Про то, где можно прочитать, буде желание — ссылку привёл выше.

Ну тогда как просто Блокировать пользователя в АД, используя его имя в файле!

8

Re: VBS: Блокировка пользователя в Домене

Вы принципиально не хотите читать? Тогда ждите, может кто-то «скопипастит».

9

Re: VBS: Блокировка пользователя в Домене

afteroot пишет:

... как просто Блокировать пользователя в АД...

Не оставляет меня мысль, что на самом деле Вы хотите не блокировать, а отключить "учётку" (это не одно и то же). Если речь именно об отключении, то в сообщении #5 темы "VBS, блокирование учетной записи пользователя на локальном компьютере" уже имеется соответствующий пример.
Адаптация его к использованию в домене минимальна - в качестве значения переменной strComputerName надо указать NetBIOS-имя любого контроллера домена.

10

Re: VBS: Блокировка пользователя в Домене

alexii пишет:

Вы принципиально не хотите читать? Тогда ждите, может кто-то «скопипастит».

Я взял на заметку то что вы скинули, спасибо читаю! Но и тут хотелось бы увидеть варианты!

11

Re: VBS: Блокировка пользователя в Домене

Dmitrii пишет:
afteroot пишет:

... как просто Блокировать пользователя в АД...

Не оставляет меня мысль, что на самом деле Вы хотите не блокировать, а отключить "учётку" (это не одно и то же). Если речь именно об отключении, то в сообщении #5 темы "VBS, блокирование учетной записи пользователя на локальном компьютере" уже имеется соответствующий пример.
Адаптация его к использованию в домене минимальна - в качестве значения переменной strComputerName надо указать NetBIOS-имя любого контроллера домена.

Эм.. но в домене можно же на любой комп зайти под любой учеткой , значит мне нужно отключить учетку в АД, и не на локальном компьютере а что б ей никто не мог пользоваться!

12

Re: VBS: Блокировка пользователя в Домене

afteroot пишет:

... но в домене можно же на любой комп зайти под любой учеткой , значит мне нужно отключить учетку в АД, и не на локальном компьютере а что б ей никто не мог пользоваться!

В рассматриваемом случае обращение к "учётке" на контроллере и есть обращение к объекту AD. Или Вы хотите управлять встроенной "учёткой" администратора?

Dmitrii пишет:

... надо указать NetBIOS-имя любого контроллера домена.

Поправка: если контроллеры - на платформе Win 2008, то (в данной задаче) не годятся контроллеры, исполняющие роль RODC (Read Only DC), т.к. не позволяют вносить изменения в AD.

13

Re: VBS: Блокировка пользователя в Домене

Dmitrii пишет:
afteroot пишет:

... но в домене можно же на любой комп зайти под любой учеткой , значит мне нужно отключить учетку в АД, и не на локальном компьютере а что б ей никто не мог пользоваться!

В рассматриваемом случае обращение к "учётке" на контроллере и есть обращение к объекту AD. Или Вы хотите управлять встроенной "учёткой" администратора?

Нет не встроенной, объект AD!

Dmitrii пишет:

... надо указать NetBIOS-имя любого контроллера домена.

Поправка: если контроллеры - на платформе Win 2008, то (в данной задаче) не годятся контроллеры, исполняющие роль RODC (Read Only DC), т.к. не позволяют вносить изменения в AD.

платформа Win 2003

14

Re: VBS: Блокировка пользователя в Домене

afteroot пишет:

Нет не встроенной, объект AD

Тогда действуйте, как я Вам уже посоветовал.

15

Re: VBS: Блокировка пользователя в Домене

afteroot, избегайте излишнего цитирования.

16

Re: VBS: Блокировка пользователя в Домене

не знаю зачем люди городят леса такие
в cmd всё сводится к одной строке:

net user <название учетки> /domain /active:no

17

Re: VBS: Блокировка пользователя в Домене

VitAliS пишет:

не знаю зачем люди городят леса такие
в cmd всё сводится к одной строке:

net user <название учетки> /domain /active:no

Вот только единственная проблема с такой строчки! Нужны права Админа, как их тут ввести?

18

Re: VBS: Блокировка пользователя в Домене

domainname=inputbox("Enter DNS Domain Name" & vbcrlf & "(Leave blank for current domain):")
username=inputbox("Enter username:")


if domainname = "" then
    set objRoot = getobject("LDAP://RootDSE")
    domainname = objRoot.get("defaultNamingContext")
end if

if username <> "" then

    wscript.echo finduser(username,domainname)
    
end if


Function FindUser(Byval UserName, Byval Domain) 
    on error resume next

    set cn = createobject("ADODB.Connection")
    set cmd = createobject("ADODB.Command")
    set rs = createobject("ADODB.Recordset")

    cn.open "Provider=ADsDSOObject;"
    
    cmd.activeconnection=cn
    cmd.commandtext="SELECT ADsPath FROM 'LDAP://" & Domain & "' WHERE sAMAccountName = '" & UserName & "'"
    
    set rs = cmd.execute


    if err<>0 then
        FindUser="Error connecting to Active Directory Database:" & err.description
    else
        if not rs.BOF and not rs.EOF then
                 rs.MoveFirst
                 FindUser = rs(0)

        else
            FindUser = "Not Found"
        end if
    end if
    cn.close
end function

Вот нашел именно поиск самого пользователя в АД, находит показывает, а как теперь его заблокировать? Сделать Disable Account?

19

Re: VBS: Блокировка пользователя в Домене

afteroot пишет:

Вот только единственная проблема с такой строчки! Нужны права Админа, как их тут ввести?

Используйте runas

afteroot пишет:

... нашел именно поиск самого пользователя в АД, находит показывает...

Зачем его искать-то, если Вам уже известно имя "учётки"? Если есть сомнения в том, верно ли указано имя, то можно просто "ловить" ошибку подключения. Например:

On Error Resume Next
Set objUser = GetObject("WinNT://" & strComputerName & "/" & strUserName & ",user")
If Err.Number = 0 Then
    objUser.AccountDisabled = True
    objUser.SetInfo
Else
    Err.Clear
End If
On Error GoTo 0
afteroot пишет:

... как теперь его заблокировать?

Так ведь уже есть готовый пример: здесь. Что в нём не устраивает?

20

Re: VBS: Блокировка пользователя в Домене

Так ведь уже есть готовый пример: здесь. Что в нём не устраивает?

Сорри уже все нормально! Решил проблему, просто меня смущало что через Имя компа оно искало, подставил домен, и все заработало
Только вот теперь возникла необходимость Блокировка не через Логин, а через displayName. Случаем не подскажите уважаемые как еще и такое можно организовать?

21

Re: VBS: Блокировка пользователя в Домене

afteroot, коллега, либо Вы наконец начнёте применять тэги на регулярной основе (я оформил Ваш пост), либо… будет последнее китайское предупреждение .

22

Re: VBS: Блокировка пользователя в Домене

afteroot пишет:

... возникла необходимость Блокировка не через Логин, а через displayName. Случаем не подскажите уважаемые как еще и такое можно организовать?

Либо с помощью ADO (подобно ранее приведённому Вами примеру), либо с помощью интерфейса IADsNameTranslate найти "учётку" в AD, выполнить привязку и, наконец, отключить.
Пример с ADO:

Dim objRoot, strDomain
Dim objUser, strDisplayName, strTemp
Dim objConnection, objCommand, objRSet, strCommandText
Const ADS_SCOPE_SUBTREE = 2

Set objRoot = GetObject("LDAP://RootDSE")
strDomain = objRoot.Get("DefaultNamingContext")
Set objRoot = Nothing
strDisplayName = Trim(InputBox("Выводимое имя пользователя:"))
If Len(strDisplayName) > 0 Then
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand = CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
    strCommandText = "SELECT ADsPath FROM 'LDAP://" & strDomain & _
        "' WHERE objectCategory='Person' AND objectClass='User' AND displayName='" & strDisplayName & "'"
    objCommand.CommandText = strCommandText
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Timeout") = 30
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    Set objRSet = objCommand.Execute
    If objRSet.RecordCount = 1 Then
        objRSet.MoveFirst
        strTemp = objRSet.Fields("ADsPath").Value
        On Error Resume Next
        Set objUser = GetObject(strTemp)
        If Err.Number = 0 Then
            objUser.AccountDisabled = True
            objUser.SetInfo
            If Err.Number = 0 Then
                strTemp = "Учётная запись отключена."
            Else
                strTemp = "Ошибка отключения учётной записи: " & Err.Number
                Err.Clear
            End If
        Else
            strTemp = "Ошибка привязки к найденному объекту: " & Err.Number
            Err.Clear
        End If
        Set objUser = Nothing
    Else
        strTemp = "Учётная запись пользователя " & UCase(strDisplayName) & " не обнаружена."
    End If
    Set objRSet = Nothing
    Set objCommand = Nothing
    objConnection.Close
    Set objConnection = Nothing
    WScript.Echo strTemp
End If
WScript.Quit 0

Пример с IADsNameTranslate:

Dim objWSNet, strDomain
Dim objTranslate, objUser, strDisplayName, strTemp
Const ADS_NAME_INITTYPE_DOMAIN = 1
Const ADS_NAME_TYPE_DISPLAY = 4
Const ADS_NAME_TYPE_1779 = 1

strDisplayName = Trim(InputBox("Выводимое имя пользователя:"))
If Len(strDisplayName) > 0 Then
    Set objWSNet = CreateObject("WScript.Network")
    strDomain = objWSNet.UserDomain
    Set objWSNet = Nothing
    On Error Resume Next
    Set objTranslate = CreateObject("NameTranslate")
    If Err.Number = 0 Then
        objTranslate.Init ADS_NAME_INITTYPE_DOMAIN, strDomain
        If Err.Number = 0 Then
            objTranslate.Set ADS_NAME_TYPE_DISPLAY, strDisplayName
            If Err.Number = 0 Then
                Set objUser = GetObject("LDAP://" & objTranslate.Get(ADS_NAME_TYPE_1779))
                If Err.Number = 0 Then
                    objUser.AccountDisabled = True
                    objUser.SetInfo
                    If Err.Number = 0 Then
                        strTemp = "Учётная запись отключена."
                    Else
                        strTemp = "Ошибка отключения учётной записи: " & Err.Number
                        Err.Clear
                    End If
                    Set objUser = Nothing
                Else
                    strTemp = "Ошибка привязки к найденному объекту: " & Err.Number
                    Err.Clear
                End If
            Else
                strTemp = "Ошибка транслирования: " & Err.Number
                Err.Clear
            End If
        Else
            strTemp = "Ошибка привязки к источнику транслирования: " & Err.Number
            Err.Clear
        End If
        Set objTranslate = Nothing
    Else
        strTemp = "Ошибка создания объекта ""NameTranslate"": " & Err.Number
        Err.Clear
    End If
    WScript.Echo strTemp
End If
WScript.Quit 0

23

Re: VBS: Блокировка пользователя в Домене

Дмитрий ОГРОМНОЕ СПАСИБО! Выручили!
Если не секрет откуда Инфу берёте или книги какие лучше почитать? За рание спасибо!

24 (изменено: Dmitrii, 2010-11-24 15:44:02)

Re: VBS: Блокировка пользователя в Домене

afteroot пишет:

... откуда Инфу берёте...

1. Полнее, чем MSDN, источника не существует.
2. alexii уже указал Вам на коллекцию ссылок, выбирайте оттуда, что требуется. Ссылка на MSDN, например,- самая первая в первом же сообщении этой коллекции.

25

Re: VBS: Блокировка пользователя в Домене

OFF: Я всем рекомендую загружать локальную базу (OFF: MSDN по-русски — если уже нет более свежей), весьма помогает.