не люблю в ручную ковырять, думаю можно же какой нить скрипт придумать чтоб типа перебором всем юзерам один и тот же скрипт прописать
» Автоматизация администрирования
>не люблю в ручную ковырять
Я тоже очень не люблю ;o)
лови скрипт, который запускается в excel в visual basic editor
Для просмотра достаточно прав обычного пользователя, для изменения данных нужны права доменного админа
скрипт написан в расчете, что все пользователи сидят в Users. Если это не так, то надо применять его для каждого OU
Sub sss()
Cells.Select
Selection.ClearContents
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &H8000500D
Set objOU = GetObject("LDAP://cn=Users,dc=dom2,dc=dom")
objOU.Filter = Array("user")
n = 0
For Each objUser In objOU
n = n + 1
' Это просто просмотр инфы из AD
Sheets("Users").Cells(n, 1).Value = objUser.cn
Sheets("Users").Cells(n, 2).Value = objUser.sAMAccountName
Sheets("Users").Cells(n, 3).Value = objUser.DisplayName
Sheets("Users").Cells(n, 4).Value = objUser.LoginScript
' А вот это запись конкретного значения в AD
' objUser.LoginScript = "script.bat"
' objUser.SetInfo
Next
End Sub
Я тоже очень не люблю ;o)
лови скрипт, который запускается в excel в visual basic editor
Для просмотра достаточно прав обычного пользователя, для изменения данных нужны права доменного админа
скрипт написан в расчете, что все пользователи сидят в Users. Если это не так, то надо применять его для каждого OU
Sub sss()
Cells.Select
Selection.ClearContents
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &H8000500D
Set objOU = GetObject("LDAP://cn=Users,dc=dom2,dc=dom")
objOU.Filter = Array("user")
n = 0
For Each objUser In objOU
n = n + 1
' Это просто просмотр инфы из AD
Sheets("Users").Cells(n, 1).Value = objUser.cn
Sheets("Users").Cells(n, 2).Value = objUser.sAMAccountName
Sheets("Users").Cells(n, 3).Value = objUser.DisplayName
Sheets("Users").Cells(n, 4).Value = objUser.LoginScript
' А вот это запись конкретного значения в AD
' objUser.LoginScript = "script.bat"
' objUser.SetInfo
Next
End Sub
AlexSSS
я несилён в скриптах, а для чего он?
я несилён в скриптах, а для чего он?
спасибки за скриптец
впринципе подобный я уже делал, на вывод информации
а вот objUser.SetInfo - ценная штучка
Добавлено
Pazan
а скрипт в данном исполнении выводит кое какую инфу о всех юзерах в AD в users
если раскомментировать для записи - то всем юзерам пропишет скрипт на логин script.bat
Добавлено
ну и лист Users в exel должен присутствовать, если нет то Sheets("Users").... убрать, оставить просто Cells(n, 1).Value = objUser.cn и т.д.
Добавлено
блин - не хочет значения писать почему то, права админа домена есть
Добавлено
objUser.LoginScript меняем на objUser.scriptPath
objUser.LoginScript = "script.bat" меняем на objUser.Put "scriptPath", "script.bat"
тогды заработает
впринципе подобный я уже делал, на вывод информации
а вот objUser.SetInfo - ценная штучка
Добавлено
Pazan
а скрипт в данном исполнении выводит кое какую инфу о всех юзерах в AD в users
если раскомментировать для записи - то всем юзерам пропишет скрипт на логин script.bat
Добавлено
ну и лист Users в exel должен присутствовать, если нет то Sheets("Users").... убрать, оставить просто Cells(n, 1).Value = objUser.cn и т.д.
Добавлено
блин - не хочет значения писать почему то, права админа домена есть
Добавлено
objUser.LoginScript меняем на objUser.scriptPath
objUser.LoginScript = "script.bat" меняем на objUser.Put "scriptPath", "script.bat"
тогды заработает
GTHack
>objUser.LoginScript меняем на objUser.scriptPath
не знаю почему, но получилось, что я работал через ADSI, а ты через AD
http://www.osp.ru/win2000/2001/01/040.htm
см Таблица 2. Соответствие между свойствами объекта пользователя в ADSI и AD.
у меня все работало именно в том виде, в котором я прислал
можно убрать
On Error Resume Next
в этом случае скрипт будет ругаться на подобных ошибках
у меня эта строка осталась от другого скрипта, где ошибки действительно надо было игнорировать
>objUser.LoginScript меняем на objUser.scriptPath
не знаю почему, но получилось, что я работал через ADSI, а ты через AD
http://www.osp.ru/win2000/2001/01/040.htm
см Таблица 2. Соответствие между свойствами объекта пользователя в ADSI и AD.
у меня все работало именно в том виде, в котором я прислал
можно убрать
On Error Resume Next
в этом случае скрипт будет ругаться на подобных ошибках
у меня эта строка осталась от другого скрипта, где ошибки действительно надо было игнорировать
т.е. получается у нас с тобой разные реализациb интерфейса IADsUser в LDAP ?
где можно глянуть какая у меня реализация ?
вообще подключение то одинаковое - объект вроде то же один и тот же создается и в режиме просмотра у меня objUser.LoginScript выводит то, что нужно, единственно - не заносит, и еще прикол - после того как я в scriptPath заношу то что надо, и повторно запускаю просмотр - то и LoginScript отображает что и scriptPath.
Вообще этот ADSI как то отдельно устанавливается или как ?
короче чего то я запутался
где можно глянуть какая у меня реализация ?
вообще подключение то одинаковое - объект вроде то же один и тот же создается и в режиме просмотра у меня objUser.LoginScript выводит то, что нужно, единственно - не заносит, и еще прикол - после того как я в scriptPath заношу то что надо, и повторно запускаю просмотр - то и LoginScript отображает что и scriptPath.
Вообще этот ADSI как то отдельно устанавливается или как ?
короче чего то я запутался
> где можно глянуть какая у меня реализация ?
> Вообще этот ADSI как то отдельно устанавливается или как ?
честно говоря, не знаю. Я с этим не разбирался. Была задача привести в порядок пользователей в домене, по примерам написал свои скрипты, которые делали все, что мне было нужно.
на http://forum.ru-board.com/topic.cgi?forum=8&topic=1908&start=360
можешь взглянуть на скрипты от kibkalo
там используется доступ к AD через OleDbConnection("Provider=ADsDSOObject")
это немного сложнее, однако если работал с рекордсетами, то не страшно. ;o)
зато это дает возможность пользоваться прелестями выборок через SQL запросы
Добавлено
PS. Ну а перевести нужные фрагменты на VB или другой подходящий язык, даже не зная С, достаточно нетрудно
> Вообще этот ADSI как то отдельно устанавливается или как ?
честно говоря, не знаю. Я с этим не разбирался. Была задача привести в порядок пользователей в домене, по примерам написал свои скрипты, которые делали все, что мне было нужно.
на http://forum.ru-board.com/topic.cgi?forum=8&topic=1908&start=360
можешь взглянуть на скрипты от kibkalo
там используется доступ к AD через OleDbConnection("Provider=ADsDSOObject")
это немного сложнее, однако если работал с рекордсетами, то не страшно. ;o)
зато это дает возможность пользоваться прелестями выборок через SQL запросы
Добавлено
PS. Ну а перевести нужные фрагменты на VB или другой подходящий язык, даже не зная С, достаточно нетрудно
через ADODB у меня есть скриптец работающий - вопрос - через селекты - токо для чтения или так же можно модификацию через SetInfo делать ?
Вопрос такой
можно ли используя объект Win32_NetworkAdapter или CIM_NetworkAdapter в WMI сделать такой NIC disabled или enabled?
и конечно все эт желательно после завернуть в скриптец какой-либо ...
можно ли используя объект Win32_NetworkAdapter или CIM_NetworkAdapter в WMI сделать такой NIC disabled или enabled?
и конечно все эт желательно после завернуть в скриптец какой-либо ...
Как запустить скрипт на удалённой машине находящейся в домене ?
Какие условия необходимы?
Пробовал Через WSH и WMI - жаба скрипт не запускается.
Есть задача в нужный момент вручную запустить скрипт на выбранных машинах.
Всё сделал со скриптом - по сети не могу его запустить на удалённой машине.
Какие условия необходимы?
Пробовал Через WSH и WMI - жаба скрипт не запускается.
Есть задача в нужный момент вручную запустить скрипт на выбранных машинах.
Всё сделал со скриптом - по сети не могу его запустить на удалённой машине.
Помогите добавить юзеров в ActiveDirectory. Нужно заполнить у них такие поля: Login, Password, First Name, Initials, Last Name, Display Name, Office, Telephone Number, Address, Organization. Еше поставить галки "User cannot change password", "Password never expires".
Помогите плиз, влом все это вручную набирать, данные эти все есть в текстовике.
Помогите плиз, влом все это вручную набирать, данные эти все есть в текстовике.
mic2000
для этого не нужно ничего автоматизировать - есть встроенные утилиты напрмер, dsadd
для этого не нужно ничего автоматизировать - есть встроенные утилиты напрмер, dsadd
merlkerry
Читал...
Потом наткнулся на это
http://itc.ua/article.phtml?ID=13655&IDw=31&pid=50
Вот думаю может ещё какие подводные камни есть...
Всё что удаётся добится в процессах появляется wscript - и всё.
Добавлено
изменение HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings Remote и IgnoreUserSettings на 1 - не помогаем. Если выполняю связку на локальной машине - всё работает, как только через сеть - фигушки. Вот выяснил WSH неоходим версии 5.6.0.8825 - иначе даже локально не работает.
Читал...
Потом наткнулся на это
http://itc.ua/article.phtml?ID=13655&IDw=31&pid=50
Вот думаю может ещё какие подводные камни есть...
Всё что удаётся добится в процессах появляется wscript - и всё.
Добавлено
изменение HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings Remote и IgnoreUserSettings на 1 - не помогаем. Если выполняю связку на локальной машине - всё работает, как только через сеть - фигушки. Вот выяснил WSH неоходим версии 5.6.0.8825 - иначе даже локально не работает.
Цитата:
для этого не нужно ничего автоматизировать - есть встроенные утилиты напрмер, dsadd
А будет ли она работать на Win2000Server, и если будет то где можно ее скачать отдельно, или на mic_2000#ua.fm бросьте пожалуйста
Привет всем! Наваял скрипт, а она работает не всегда Помогите разобраться в чем дело. Скрипт считывает из файла спискок пользователей домена, меняет им пароль на введенный в инпутбокс, и устанавливает галку "Требовать смену пароля при следующем входе в систему". В ходе тестирования установил, что галка эта не ставиться, если включена галка "срок действия пароля не ограничен", поэтому скрипт её выключает.
А трабла в том, что скрипт на моей машине работает через раз, то есть не менят галки (для проверки смотрел чекбосы в консоли)
На главном контроллере домена (server 2003) скрипт работает где-то раз 7 из 8. Пока я проверял только на одном пользователе, а если их 100 кто-нибудь неокученный останеться. Можно конечно обновлять список пользователей и скрипт снова запускать, пока список не опустеет, но как-то некраисво это
Может кто знает в чем дело?
' Присваиваем переменным значения.
ufile=InputBox("файл сюда", "Укажите текстовый файл с пользователями","user.txt")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(ufile, 1, false)
sDomain="мой домен"
sPword=InputBox("Пароль сюда", "Введите пароль для установки указанным в файле челам")
'читаем файл со списком юзеров
Do Until objFile.AtEndOfStream
sUserName = objFile.ReadLine
'Подключаемся к объекту пользователя и назначаем пароль.
Set oUser = GetObject("WinNT://" & sDomain & "/" & sUserName & ",user")
flag=oUser.Get("UserFlags")
'Флаг установлен!
if (flag AnD &H10000)<>0 then
tflag=flag XoR &H10000
oUser.Put "UserFlags",tflag
oUser.SetInfo
End If
oUser.SetPassword sPword
' Обязываем пользователя изменить пароль при следующей регистрации.
oUser.Put "PasswordExpired", 1
oUser.SetInfo
Loop
objFile.Close
Wscript.Echo("Ruk, zuk und alles fertig!")
А трабла в том, что скрипт на моей машине работает через раз, то есть не менят галки (для проверки смотрел чекбосы в консоли)
На главном контроллере домена (server 2003) скрипт работает где-то раз 7 из 8. Пока я проверял только на одном пользователе, а если их 100 кто-нибудь неокученный останеться. Можно конечно обновлять список пользователей и скрипт снова запускать, пока список не опустеет, но как-то некраисво это
Может кто знает в чем дело?
' Присваиваем переменным значения.
ufile=InputBox("файл сюда", "Укажите текстовый файл с пользователями","user.txt")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(ufile, 1, false)
sDomain="мой домен"
sPword=InputBox("Пароль сюда", "Введите пароль для установки указанным в файле челам")
'читаем файл со списком юзеров
Do Until objFile.AtEndOfStream
sUserName = objFile.ReadLine
'Подключаемся к объекту пользователя и назначаем пароль.
Set oUser = GetObject("WinNT://" & sDomain & "/" & sUserName & ",user")
flag=oUser.Get("UserFlags")
'Флаг установлен!
if (flag AnD &H10000)<>0 then
tflag=flag XoR &H10000
oUser.Put "UserFlags",tflag
oUser.SetInfo
End If
oUser.SetPassword sPword
' Обязываем пользователя изменить пароль при следующей регистрации.
oUser.Put "PasswordExpired", 1
oUser.SetInfo
Loop
objFile.Close
Wscript.Echo("Ruk, zuk und alles fertig!")
А ошибки какие-то получаешь?
Есть задача: в виду того что регулярно пользователи натыкаются на хреновые сайты которые меняют им префиксы - решили это дело похерить - вот интересно как это можно автоматизировать во всём домене, что бы запретить например запись в ключи реестра HRCU!?
ps дело в том, что доменные политики могут наложить ограничение лишь на веку HKLM, и пользователя не совсем затрагивают таким образом, второй вариант написать скрипт который при логоне бы просто удалял\менял нужную ветку реестра.... но может быть есть более изящный способ!?
ps дело в том, что доменные политики могут наложить ограничение лишь на веку HKLM, и пользователя не совсем затрагивают таким образом, второй вариант написать скрипт который при логоне бы просто удалял\менял нужную ветку реестра.... но может быть есть более изящный способ!?
greenfox
1. http://www.microsoft.com/technet/scriptcenter/scripts/os/registry/default.mspx
2. Попробуй неизменяемые профили (.man)
1. http://www.microsoft.com/technet/scriptcenter/scripts/os/registry/default.mspx
2. Попробуй неизменяемые профили (.man)
merlkerry
Цитата:
Нет, сообщений об ошибках не получаю, думаю, что может между применением oUser.SetInfo должен какой-то интервал пройти. Наверно не успевает измениться свойство "срок действия пароля не ограничен" и соответственно "Требовать смену пароля при следующем входе в систему" не применяется. Попробую паузу между ними воткнуть, посмотрю что будет.
Цитата:
А ошибки какие-то получаешь?
Нет, сообщений об ошибках не получаю, думаю, что может между применением oUser.SetInfo должен какой-то интервал пройти. Наверно не успевает измениться свойство "срок действия пароля не ограничен" и соответственно "Требовать смену пароля при следующем входе в систему" не применяется. Попробую паузу между ними воткнуть, посмотрю что будет.
FreemanRU
Цитата:
Цитата:
Цитата:
http://www.microsoft.com/technet/scriptcenter/scripts/os/registry/default.mspxэто насколько я понимаю аналог простого импорта\экспорта кусков реестра только в скриптовом варианте...!? более мощный вариант так сказать...
Цитата:
Попробуй неизменяемые профили (.man)а это что? линк можно на описание?
greenfox
Цитата:
Это просто примеры работы с реестром через скрипты. Изменяй как хочешь - и вперед.
Цитата:
Цитата:
Но это уже в дрругой топик...
Цитата:
это насколько я понимаю аналог простого импорта\экспорта кусков реестра только в скриптовом варианте...!?
Это просто примеры работы с реестром через скрипты. Изменяй как хочешь - и вперед.
Цитата:
а это что? линк можно на описание?
Цитата:
Обязательный профиль пользователя является предварительно настраиваемым. Пользователь по-прежнему может вносить изменения в свой рабочий стол, однако эти изменения не сохраняются при выходе из системы. При следующем входе пользователя обязательный профиль снова загружается с сервера. Чтобы сделать профиль пользователя обязательным, следует переименовать файл NTuser.dat, который расположен на сервере, в NTuser.man. Файл профиля с этим расширением будет доступен только для чтения.
обязательный профиль пользователя
Профиль пользователя, который не обновляется при выходе пользователя из системы. Такой профиль загружается всякий раз, когда пользователь входит в систему; он создается администратором и присваивается одному или нескольким пользователям для создания согласованных профилей пользователей или профилей пользователей, предназначенных для использования в определенном контексте. Только члены группы «Администраторы» могут изменять профили.
См. также перемещаемый профиль пользователя, профиль пользователя
Но это уже в дрругой топик...
Можни ли средсвами WSH/VBS как-нибудь использовать для определения переменных среды?
Т.е. есть переменная, например Path, которая имеет несколько значений, вопрос стоит в выборе нужного и именно в самом присвоении этого значения.
Это нужно для того, чтобы по значению этой переменной скопировать файл. (по значению пути, которое в ней записано).
И сопутствующий вопрос, как присвоить переменной, значение, прописанное в реестре типа c:\windows ? И потом по этому пути скопировать файл...
Если непонятно написано, готов пояснить, а то в голове бардак...
Т.е. есть переменная, например Path, которая имеет несколько значений, вопрос стоит в выборе нужного и именно в самом присвоении этого значения.
Это нужно для того, чтобы по значению этой переменной скопировать файл. (по значению пути, которое в ней записано).
И сопутствующий вопрос, как присвоить переменной, значение, прописанное в реестре типа c:\windows ? И потом по этому пути скопировать файл...
Если непонятно написано, готов пояснить, а то в голове бардак...
Любая переменная окружения имеет только одно значение. А вот как его трактовать - это другой вопрос. В Path параметы разделяются ';', а в BLASTER - пробелом, где нибудь ещё - вообще по-другому...
короче говоря, по первой части вопроса ничего не понял
для простейшей работы с реесторм есть обьект WshShell
например:
var WshShell = new ActiveXObject("WScript.Shell");
var sKey = WshShell.RegRead(keyPath);
короче говоря, по первой части вопроса ничего не понял
для простейшей работы с реесторм есть обьект WshShell
например:
var WshShell = new ActiveXObject("WScript.Shell");
var sKey = WshShell.RegRead(keyPath);
как можно скриптами вытащить с сервера список пользователей, которыми открыт конкретный файл на этом сервере?
Как скриптом удалить определенные файлы из системы?
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile("c:\\x.txt");
fso.DeleteFile("c:\\x.txt");
distance
Поместил я это дело в файл VBS, путь поправил, но ничего не получается при запуске ошибку выдает.
Поместил я это дело в файл VBS, путь поправил, но ничего не получается при запуске ошибку выдает.
exMIB
первая строка должна быть такой (для VBS)
set fso = createobject("Scripting.FileSystemObject")
первая строка должна быть такой (для VBS)
set fso = createobject("Scripting.FileSystemObject")
Цитата:
Т.е. есть переменная, например Path, которая имеет несколько значений, вопрос стоит в выборе нужного и именно в самом присвоении этого значенияА как ты определить хочешь, что это именно то самое, нужное значение, откуда инфу брать?
Значение то из реестра средствами vbscript можно любое выдрать, приблизительно:
set WSHShell = WScript.CreateObject("WScript.Shell")
myString = WSHShell.RegRead(_
"HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment\Path")
a=Split(myString, ";", -1)
for i=0 to Ubound(a)
msgbox a(i)
next
Это для примера, а на самом деле вместо msgbox - если a(i)=нужное_тебе_значение, то CopyFile
Цитата:
Если непонятно написано, готов пояснитьПоясни конечно. Напишешь поточнее, что тебе нужно выдернуть из какой переменной и откуда-куда скопировать - с большей вероятностью получишь правильный ответ.
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: Зеркалирование дисков Win2000
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.