Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования

Автор: GTHack
Дата сообщения: 13.10.2004 12:56
не люблю в ручную ковырять, думаю можно же какой нить скрипт придумать чтоб типа перебором всем юзерам один и тот же скрипт прописать
Автор: AlexSSS
Дата сообщения: 13.10.2004 13:14
>не люблю в ручную ковырять
Я тоже очень не люблю ;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
Автор: Pazan
Дата сообщения: 13.10.2004 16:18
AlexSSS
я несилён в скриптах, а для чего он?
Автор: GTHack
Дата сообщения: 14.10.2004 05:43
спасибки за скриптец
впринципе подобный я уже делал, на вывод информации
а вот 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"

тогды заработает
Автор: AlexSSS
Дата сообщения: 14.10.2004 08:35
GTHack
>objUser.LoginScript меняем на objUser.scriptPath
не знаю почему, но получилось, что я работал через ADSI, а ты через AD

http://www.osp.ru/win2000/2001/01/040.htm
см Таблица 2. Соответствие между свойствами объекта пользователя в ADSI и AD.
у меня все работало именно в том виде, в котором я прислал

можно убрать
On Error Resume Next
в этом случае скрипт будет ругаться на подобных ошибках
у меня эта строка осталась от другого скрипта, где ошибки действительно надо было игнорировать
Автор: GTHack
Дата сообщения: 14.10.2004 11:13
т.е. получается у нас с тобой разные реализациb интерфейса IADsUser в LDAP ?
где можно глянуть какая у меня реализация ?
вообще подключение то одинаковое - объект вроде то же один и тот же создается и в режиме просмотра у меня objUser.LoginScript выводит то, что нужно, единственно - не заносит, и еще прикол - после того как я в scriptPath заношу то что надо, и повторно запускаю просмотр - то и LoginScript отображает что и scriptPath.
Вообще этот ADSI как то отдельно устанавливается или как ?

короче чего то я запутался
Автор: AlexSSS
Дата сообщения: 14.10.2004 14:48
> где можно глянуть какая у меня реализация ?
> Вообще этот ADSI как то отдельно устанавливается или как ?
честно говоря, не знаю. Я с этим не разбирался. Была задача привести в порядок пользователей в домене, по примерам написал свои скрипты, которые делали все, что мне было нужно.

на http://forum.ru-board.com/topic.cgi?forum=8&topic=1908&start=360
можешь взглянуть на скрипты от kibkalo

там используется доступ к AD через OleDbConnection("Provider=ADsDSOObject")
это немного сложнее, однако если работал с рекордсетами, то не страшно. ;o)
зато это дает возможность пользоваться прелестями выборок через SQL запросы

Добавлено
PS. Ну а перевести нужные фрагменты на VB или другой подходящий язык, даже не зная С, достаточно нетрудно
Автор: GTHack
Дата сообщения: 15.10.2004 07:28
через ADODB у меня есть скриптец работающий - вопрос - через селекты - токо для чтения или так же можно модификацию через SetInfo делать ?
Автор: merlkerry
Дата сообщения: 16.11.2004 15:27
Вопрос такой

можно ли используя объект Win32_NetworkAdapter или CIM_NetworkAdapter в WMI сделать такой NIC disabled или enabled?

и конечно все эт желательно после завернуть в скриптец какой-либо ...
Автор: anat75
Дата сообщения: 16.11.2004 17:08
Как запустить скрипт на удалённой машине находящейся в домене ?
Какие условия необходимы?

Пробовал Через WSH и WMI - жаба скрипт не запускается.
Есть задача в нужный момент вручную запустить скрипт на выбранных машинах.
Всё сделал со скриптом - по сети не могу его запустить на удалённой машине.
Автор: merlkerry
Дата сообщения: 16.11.2004 17:32
посмотри здесь

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wslrfremote_wshobject.asp
Автор: mic2000
Дата сообщения: 16.11.2004 18:17
Помогите добавить юзеров в ActiveDirectory. Нужно заполнить у них такие поля: Login, Password, First Name, Initials, Last Name, Display Name, Office, Telephone Number, Address, Organization. Еше поставить галки "User cannot change password", "Password never expires".
Помогите плиз, влом все это вручную набирать, данные эти все есть в текстовике.
Автор: merlkerry
Дата сообщения: 16.11.2004 18:29
mic2000
для этого не нужно ничего автоматизировать - есть встроенные утилиты напрмер, dsadd
Автор: anat75
Дата сообщения: 17.11.2004 07:37
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 - иначе даже локально не работает.
Автор: mic2000
Дата сообщения: 17.11.2004 10:01

Цитата:
для этого не нужно ничего автоматизировать - есть встроенные утилиты напрмер, dsadd


А будет ли она работать на Win2000Server, и если будет то где можно ее скачать отдельно, или на mic_2000#ua.fm бросьте пожалуйста
Автор: Mishgunnn
Дата сообщения: 24.11.2004 11:35
Привет всем! Наваял скрипт, а она работает не всегда Помогите разобраться в чем дело. Скрипт считывает из файла спискок пользователей домена, меняет им пароль на введенный в инпутбокс, и устанавливает галку "Требовать смену пароля при следующем входе в систему". В ходе тестирования установил, что галка эта не ставиться, если включена галка "срок действия пароля не ограничен", поэтому скрипт её выключает.
А трабла в том, что скрипт на моей машине работает через раз, то есть не менят галки (для проверки смотрел чекбосы в консоли)
На главном контроллере домена (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!")
Автор: merlkerry
Дата сообщения: 24.11.2004 13:17
А ошибки какие-то получаешь?
Автор: greenfox
Дата сообщения: 24.11.2004 17:03
Есть задача: в виду того что регулярно пользователи натыкаются на хреновые сайты которые меняют им префиксы - решили это дело похерить - вот интересно как это можно автоматизировать во всём домене, что бы запретить например запись в ключи реестра HRCU!?
ps дело в том, что доменные политики могут наложить ограничение лишь на веку HKLM, и пользователя не совсем затрагивают таким образом, второй вариант написать скрипт который при логоне бы просто удалял\менял нужную ветку реестра.... но может быть есть более изящный способ!?
Автор: FreemanRU
Дата сообщения: 24.11.2004 18:05
greenfox
1. http://www.microsoft.com/technet/scriptcenter/scripts/os/registry/default.mspx
2. Попробуй неизменяемые профили (.man)
Автор: Mishgunnn
Дата сообщения: 25.11.2004 06:32
merlkerry

Цитата:
А ошибки какие-то получаешь?


Нет, сообщений об ошибках не получаю, думаю, что может между применением oUser.SetInfo должен какой-то интервал пройти. Наверно не успевает измениться свойство "срок действия пароля не ограничен" и соответственно "Требовать смену пароля при следующем входе в систему" не применяется. Попробую паузу между ними воткнуть, посмотрю что будет.
Автор: greenfox
Дата сообщения: 25.11.2004 11:29
FreemanRU

Цитата:
http://www.microsoft.com/technet/scriptcenter/scripts/os/registry/default.mspx
это насколько я понимаю аналог простого импорта\экспорта кусков реестра только в скриптовом варианте...!? более мощный вариант так сказать...

Цитата:
Попробуй неизменяемые профили (.man)
а это что? линк можно на описание?
Автор: FreemanRU
Дата сообщения: 25.11.2004 11:44
greenfox

Цитата:
это насколько я понимаю аналог простого импорта\экспорта кусков реестра только в скриптовом варианте...!?

Это просто примеры работы с реестром через скрипты. Изменяй как хочешь - и вперед.

Цитата:
а это что? линк можно на описание?


Цитата:

Обязательный профиль пользователя является предварительно настраиваемым. Пользователь по-прежнему может вносить изменения в свой рабочий стол, однако эти изменения не сохраняются при выходе из системы. При следующем входе пользователя обязательный профиль снова загружается с сервера. Чтобы сделать профиль пользователя обязательным, следует переименовать файл NTuser.dat, который расположен на сервере, в NTuser.man. Файл профиля с этим расширением будет доступен только для чтения.

обязательный профиль пользователя
Профиль пользователя, который не обновляется при выходе пользователя из системы. Такой профиль загружается всякий раз, когда пользователь входит в систему; он создается администратором и присваивается одному или нескольким пользователям для создания согласованных профилей пользователей или профилей пользователей, предназначенных для использования в определенном контексте. Только члены группы «Администраторы» могут изменять профили.
См. также перемещаемый профиль пользователя, профиль пользователя

Но это уже в дрругой топик...
Автор: AlexisZP
Дата сообщения: 07.12.2004 17:36
Можни ли средсвами WSH/VBS как-нибудь использовать для определения переменных среды?
Т.е. есть переменная, например Path, которая имеет несколько значений, вопрос стоит в выборе нужного и именно в самом присвоении этого значения.
Это нужно для того, чтобы по значению этой переменной скопировать файл. (по значению пути, которое в ней записано).
И сопутствующий вопрос, как присвоить переменной, значение, прописанное в реестре типа c:\windows ? И потом по этому пути скопировать файл...
Если непонятно написано, готов пояснить, а то в голове бардак...
Автор: distance
Дата сообщения: 07.12.2004 19:34
Любая переменная окружения имеет только одно значение. А вот как его трактовать - это другой вопрос. В Path параметы разделяются ';', а в BLASTER - пробелом, где нибудь ещё - вообще по-другому...
короче говоря, по первой части вопроса ничего не понял
для простейшей работы с реесторм есть обьект WshShell
например:
var WshShell = new ActiveXObject("WScript.Shell");
var sKey = WshShell.RegRead(keyPath);
Автор: AlexSSS
Дата сообщения: 09.12.2004 12:14
как можно скриптами вытащить с сервера список пользователей, которыми открыт конкретный файл на этом сервере?
Автор: exMIB
Дата сообщения: 10.12.2004 01:48
Как скриптом удалить определенные файлы из системы?
Автор: distance
Дата сообщения: 10.12.2004 02:31
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile("c:\\x.txt");
Автор: exMIB
Дата сообщения: 10.12.2004 03:21
distance
Поместил я это дело в файл VBS, путь поправил, но ничего не получается при запуске ошибку выдает.
Автор: AlexSSS
Дата сообщения: 10.12.2004 09:32
exMIB
первая строка должна быть такой (для VBS)
set fso = createobject("Scripting.FileSystemObject")
Автор: igor andreev
Дата сообщения: 10.12.2004 15:02

Цитата:
Т.е. есть переменная, например 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, истории становления российского интернета. Сделано для людей.