Форум программистов, компьютерный форум, киберфорум
Администрирование Windows
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 30

Добавить привязку пользователю в AD

03.08.2015, 19:45. Показов 1697. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый День!
Требуется помощь, наш администратор в отпуске, а в части написание скриптов я чайник.
Требуется каждому пользователю добавить в разделе ,Вход на рабочие станции, к уже существующим ПК еще одну.
Подразделений много и пользователей то же много.
Помогите со скриптом
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2015, 19:45
Ответы с готовыми решениями:

Как сделать привязку эмблемы к пользователю?
Маленькими шагами делаю футбольный онлайн менеджер, и в это же время обучаюсь php. Суть такова, что нужно сделать так что бы после...

добавить прав пользователю
Добрый день. Есть пользователь во вкладке "безопасность" ms sql server 2012. он уже работает с бд TILLsegviva. и мне надо сопоставить...

Добавить кнопку пользователю
Управляемое приложение конфигурация - Управление небольшой фирмой Блин не могу банально добавить пользователю кнопку: она у...

9
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
03.08.2015, 23:02
Цитата Сообщение от lox-ness Посмотреть сообщение
... к уже существующим ПК еще одну
Всем оду и ту же что ли?
0
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 30
04.08.2015, 04:27  [ТС]
Пользователи ограничены входом на несколько ПЭВМ (могут отличаться), но потребовалось добавить еще одну всем
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9464 / 5244 / 625
Регистрация: 13.03.2013
Сообщений: 18,486
Записей в блоге: 37
04.08.2015, 08:04
Цитата Сообщение от lox-ness Посмотреть сообщение
Пользователи ограничены входом на несколько ПЭВМ (могут отличаться), но потребовалось добавить еще одну всем
Получается каждый пользователь привязан к конкретным компьютерам?
Цитата Сообщение от lox-ness Посмотреть сообщение
но потребовалось добавить еще одну всем
Компьютер в домене?
Если да, то какую ошибку выдает при попытке войти в систему под учетной записью доменного пользователя?
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
04.08.2015, 09:17
Цитата Сообщение от lox-ness Посмотреть сообщение
Помогите со скриптом
Например, так (запускайте в консольном режиме):
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Dim objFS, objFile, strLog, strTranslator, strList, strTemp, blnIsConsole
Dim objRoot, strDomain, objUser, strWS, strTest, arrAdd, strAdd, i
Dim objConnection, objCommand, objRSet, strAttributes, strCommandText
Const ADS_SCOPE_SUBTREE = 2
 
strLog = "UserWorkstations_Result.log"
arrAdd = Array("comp1", "comp2", "comp3")
Set objFS = CreateObject("Scripting.FileSystemObject")
strTranslator = objFS.GetBaseName(WScript.FullName)
If StrComp(strTranslator, "cscript", vbTextCompare) = 0 Then
    blnIsConsole = True
Else
    blnIsConsole = False
End If
If Not blnIsConsole Then
    MsgBox "Сценарий ориентирован на работу в консольном режиме.", vbExclamation, "Настройка атрибута ""Вход на..."""
Else
    Set objRoot = GetObject("LDAP://RootDSE")
    strDomain = objRoot.Get("defaultNamingContext")
    Set objRoot = Nothing
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand = CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Timeout") = 30
    objCommand.Properties("Sort On") = "cn"
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    For i = 0 To UBound(arrAdd)
        objCommand.CommandText = "SELECT ADsPath FROM 'LDAP://" & strDomain & "' WHERE objectCategory='Computer' AND cn='" & arrAdd(i) & "'"
        Set objRSet = objCommand.Execute
        If objRSet.RecordCount = 1 Then
            strAdd = strAdd & "," & arrAdd(i)
        Else
            strTest = strTest & "," & arrAdd(i)
        End If
    Next
    If Len(strAdd) = 0 Then
        WScript.Echo "Список станций не содержит корректных имён."
    Else
        If Len(strTest) > 0 Then WScript.Echo "Список станций содержит некорректные имёна: " & Mid(strTest, 2)
        arrAdd = Split(Mid(strAdd, 2), ","): strAdd = vbNullString: strTest = vbNullString
        strAttributes = "ADsPath,cn,userWorkstations"
        strCommandText = "SELECT " & strAttributes & " FROM 'LDAP://" & strDomain & "' WHERE objectCategory='Person' AND objectClass='User'"
        objCommand.CommandText = strCommandText
        Set objRSet = objCommand.Execute
        On Error Resume Next
        objRSet.MoveFirst
        Do
            If Not IsNull(objRSet.Fields("userWorkstations").Value) Then
                strWS = objRSet.Fields("userWorkstations").Value
                strTemp = objRSet.Fields("cn").Value & " = " & strWS
                strTest = "," & strWS & ",": strAdd = vbNullString
                For i = 0 To UBound(arrAdd)
                    If InStr(1, strTest, "," & arrAdd(i) & ",", vbTextCompare) = 0 Then strAdd = strAdd & "," & arrAdd(i)
                Next
                If Len(strAdd) > 0 Then
                    strWS = strWS & strAdd
                    Set objUser = GetObject(objRSet.Fields("ADsPath").Value)
                    objUser.userWorkstations = strWS
                    objUser.SetInfo
                    If Err.Number = 0 Then
                        strTemp = strTemp & " -> " & objUser.userWorkstations
                    Else
                        strTemp = strTemp & " -> ошибка " & Err.Number & " при изменении списка станций. " & Err.Description
                        Err.Clear
                    End If
                Else
                    strTemp = strTemp & " -> список станций изменять не требуется"
                End If
                strList = strList & strTemp & vbNewLine
                WScript.Echo strTemp
            End If
            objRSet.MoveNext
        Loop While Not objRSet.EOF
        If Len(strList) > 0 Then
            strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog)
            Set objFile = objFS.CreateTextFile(strLog, True)
            objFile.Write strList
            objFile.Close
            Set objFile = Nothing
            WScript.Echo "Путь к файлу журнала: " & UCase(strLog)
        Else
            WScript.Echo "Не найдено учётных записей пользователей с ограничением интерактивного входа."
        End If
    End If
    Set objRSet = Nothing: Set objCommand = Nothing
    objConnection.Close
    Set objCommand = Nothing
End If
Set objFS = Nothing
WScript.Quit 0

Сценарий позволяет добавить заданный набор имён станций к атрибуту userWorkstations тех пользовательских "учёток", у которых уже имеются ограничения на интерактивнй вход.
Прочие "учётки" не обрабатываются.
Предварительно выполняется проверка на корректность заданных имён станций и на наличие дубликатов этих имён (сравнительно с уже имеющимся набором имён в атрибуте). В значение атрибута добавляются только корректные и не дублирующиеся имена.
Цитата Сообщение от lox-ness Посмотреть сообщение
... добавить еще одну...
Оставьте в массиве arrAdd[] только одно значение.
0
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 30
04.08.2015, 10:32  [ТС]
Спасибо!!!!!!

у каждого пользователя свой набор ПЭВМ на которые он может заходить.
ПЭВМ которую нужно присоединить в домене, а можно еще строчку дописать, чтобы применялось к конкретному контейнеру в AD (мы там не одни и другим организациям наши проблемы не нужны)
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
04.08.2015, 10:44
lox-ness, выкладывайте сразу уж все "хотелки".
0
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 30
04.08.2015, 16:43  [ТС]
Да вроде все "хотелки" Спасибо большое за помощь
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
04.08.2015, 18:21
Лучший ответ Сообщение было отмечено lox-ness как решение

Решение

Раз "хотелок" больше нет, то вот вариант:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Dim objFS, objFile, strLog, strTranslator, strList, strTemp, blnIsConsole
Dim objRoot, strDomain, strOU, objUser, strWS, strTest, arrAdd, strAdd, i
Dim objConnection, objCommand, objRSet, strAttributes, strCommandText
Const ADS_SCOPE_SUBTREE = 2
 
strLog = "UserWorkstations_Result.log"
arrAdd = Array("comp1", "comp2", "comp3")
strOU = "OU=Unit2,OU=Unit1,DC=Level2,DC=Level1"
Set objFS = CreateObject("Scripting.FileSystemObject")
strTranslator = objFS.GetBaseName(WScript.FullName)
If StrComp(strTranslator, "cscript", vbTextCompare) = 0 Then
    blnIsConsole = True
Else
    blnIsConsole = False
End If
If Not blnIsConsole Then
    MsgBox "Сценарий ориентирован на работу в консольном режиме.", vbExclamation, "Настройка атрибута ""Вход на..."""
Else
    Set objRoot = GetObject("LDAP://RootDSE")
    strDomain = objRoot.Get("defaultNamingContext")
    Set objRoot = Nothing
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand = CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Timeout") = 30
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    For i = 0 To UBound(arrAdd)
        objCommand.CommandText = "SELECT ADsPath FROM 'LDAP://" & strDomain & "' WHERE objectCategory='Computer' AND cn='" & arrAdd(i) & "'"
        Set objRSet = objCommand.Execute
        If objRSet.RecordCount = 1 Then
            strAdd = strAdd & "," & arrAdd(i)
        Else
            strTest = strTest & "," & arrAdd(i)
        End If
    Next
    If Len(strAdd) = 0 Then
        WScript.Echo "Список станций не содержит корректных имён."
    Else
        If Len(strTest) > 0 Then WScript.Echo "Список станций содержит некорректные имёна: " & Mid(strTest, 2)
        arrAdd = Split(Mid(strAdd, 2), ","): strAdd = vbNullString: strTest = vbNullString
        strAttributes = "ADsPath,cn,userWorkstations"
        strCommandText = "SELECT " & strAttributes & " FROM 'LDAP://" & strOU & "' WHERE objectCategory='Person' AND objectClass='User'"
        objCommand.CommandText = strCommandText
        Set objRSet = objCommand.Execute
        On Error Resume Next
        objRSet.MoveFirst
        Do
            If Not IsNull(objRSet.Fields("userWorkstations").Value) Then
                strWS = objRSet.Fields("userWorkstations").Value
                strTemp = objRSet.Fields("cn").Value & " = " & strWS
                strTest = "," & strWS & ",": strAdd = vbNullString
                For i = 0 To UBound(arrAdd)
                    If InStr(1, strTest, "," & arrAdd(i) & ",", vbTextCompare) = 0 Then strAdd = strAdd & "," & arrAdd(i)
                Next
                If Len(strAdd) > 0 Then
                    strWS = strWS & strAdd
                    Set objUser = GetObject(objRSet.Fields("ADsPath").Value)
                    objUser.userWorkstations = strWS
                    objUser.SetInfo
                    If Err.Number = 0 Then
                        strTemp = strTemp & " -> " & objUser.userWorkstations
                    Else
                        strTemp = strTemp & " -> ошибка " & Err.Number & " при изменении списка станций. " & Err.Description
                        Err.Clear
                    End If
                Else
                    strTemp = strTemp & " -> список станций изменять не требуется"
                End If
                strList = strList & strTemp & vbNewLine
                WScript.Echo strTemp
            End If
            objRSet.MoveNext
        Loop While Not objRSet.EOF
        If Len(strList) > 0 Then
            strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog)
            Set objFile = objFS.CreateTextFile(strLog, True)
            objFile.Write strList
            objFile.Close
            Set objFile = Nothing
            WScript.Echo "Путь к файлу журнала: " & UCase(strLog)
        Else
            WScript.Echo "Не найдено учётных записей с ограничением интерактивного входа."
        End If
    End If
    Set objRSet = Nothing: Set objCommand = Nothing
    objConnection.Close
    Set objCommand = Nothing
End If
Set objFS = Nothing
WScript.Quit 0

В качестве значения переменной strOU укажите реальный AD-путь к подразделению, которое должно быть самой верхней точкой поиска (в примере сценария имени этого подразделения соответствует значение Unit2).
2
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 30
05.08.2015, 18:46  [ТС]
Большое спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2015, 18:46
Помогаю со студенческими работами здесь

Добавить текст на сайт пользователю
Всем привет. Ребята, нужна помощь, не могу сообразить каким образом это следует реализовывать. На картинке суть вопроса описана. В...

Как добавить набор подчиненных пользователей пользователю в ASP.NET Identity?
После добавления public class ApplicationUser : IdentityUser { public ICollection<ApplicationUser> Subordinates { get;...

Установить привязку
Возможно ли это в 1с ? Вынужден писать и разрабатывать интерфейс в 1С, мыкаюсь и не могу понять, как мне переключатели привязать к...

Локализация через привязку
Есть небольшой проект на WPF. Весь функционал уже готов, хотелось бы сделать локализацию (исключительно для галочки). Причем хотелось бы...

Убрать привязку к железу!
У программы Signals Analyzer идет привязка к железу, чтоб распаковать, и снять привязку , надо постараться! <удалено> ссылка на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 05.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 03.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru