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

» Автоматизация администрирования. Часть 2

Автор: jONES1979
Дата сообщения: 07.03.2007 12:43
cluster

Цитата:
И какой командой выставить галки
- Пользователь не может менять пароль
- Пароль никогда не истекает



Код:
Const ADS_UF_PASSWORD_CANT_CHANGE = &H40
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000

Flag = objUser.Get("UserAccountControl")
newFlag = Flag or ADS_UF_PASSWORD_CANT_CHANGE
newFlag = newFlag or ADS_UF_DONT_EXPIRE_PASSWD
objUser.Put "userAccountControl", newFlag
Автор: tedhome
Дата сообщения: 07.03.2007 12:44
День добрый!

Есть задача написать скрипт, который бы сравнивал два файла. old.txt и new.txt построчно. При этом если любая строка из файла new.txt не будет существовать в файле old.txt, то она запишется в новый файл, а если будет, то запись не произойдет.

Написал основываясь на примерах с msdn скрипт, но он ругается на циклы Next.
Куда копать?

[more]
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.OpenTextFile ("new.txt", 1)
Do Until f1.AtEndOfStream
strNextLine1 = f1.Readline
arrServiceList1 = Split(strNextLine1 , ",")

str_new=arrServiceList1(0)

Set f2 = fso.OpenTextFile ("old.txt", 1)
Do Until f2.AtEndOfStream
strNextLine2 = f2.Readline
arrServiceList2 = Split(strNextLine2 , ",")

str_old=arrServiceList2(0)

if str_new=str_old then

For i = 1 to Ubound(arrServiceList2)
str_old=arrServiceList2(i)

elseif str_old=str_new then

Next
Loop

f2.close

else

Set sk= fso.OpenTextFile ("str_new.txt", 8, True)
sk.write str_new & vbcrlf
sk.close

For i = 1 to Ubound(arrServiceList1)
str_new=arrServiceList(i)


Set f2 = fso.OpenTextFile ("old.txt", 1)
Do Until f2.AtEndOfStream
strNextLine2 = f2.Readline
arrServiceList2 = Split(strNextLine2 , ",")

str_old=arrServiceList2(0)
if str_newn=str_old then

For i = 1 to Ubound(arrServiceList2)
str_old=arrServiceList2(i)
elseif str_newn=str_old then

Next
Loop

else

Set sk= fso.OpenTextFile ("pre_itog.sms", 8, True)
sk.write str_new & vbcrlf
sk.close
end if

f2.close

f1.close
Next
loop

[/more]
Автор: jONES1979
Дата сообщения: 07.03.2007 13:11
Staric
добавь назначение прав на папку. вот пример http://slil.ru/24042110
Автор: SYMXP
Дата сообщения: 07.03.2007 14:14
Господа, а нет ли у кого скрипта сбрасывающего настройки сервисов WinXP в исходное(default) состояние? А может ещё что есть для этого?
Автор: cluster
Дата сообщения: 07.03.2007 16:03
jONES1979

Цитата:
Const ADS_UF_PASSWORD_CANT_CHANGE = &H40
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000

Flag = objUser.Get("UserAccountControl")
newFlag = Flag or ADS_UF_PASSWORD_CANT_CHANGE
newFlag = newFlag or ADS_UF_DONT_EXPIRE_PASSWD
objUser.Put "userAccountControl", newFlag

Пасиба, но не ставится галка "Пользователь не может менять пароль"
Автор: tedhome
Дата сообщения: 07.03.2007 16:21
jONES1979
cluster

А можно ли при создании user-а задать список пк, на которые user может логинится?
и можно ли уже при создании user-а расставить галки в закладке Enviromental и Remote control.
Автор: Anton_Y
Дата сообщения: 07.03.2007 16:29
whs | открыть файл, найти, заменить, сохранить

Стоит задача с помощью whs открыть текстовый файл, найти там все последовательности
XXXX, заменить их на YYYY, и сохранить с тем же именем..

Фигня, согласен, но скажите хоть какие там методы\свойства в этом whs есть =)))
Я вообще в этом ноль
Автор: tedhome
Дата сообщения: 07.03.2007 17:01
открываешь файл один для чтения другой для записи.
читаешь все в массив и построчно и делаешь замену

Пример на одной строке

set fso=CreateObject("Scripting.FileSystemObject")
set file1=fso.opentextfile("istochnik.txt",1)
str=file1.readline

new_str=replace(str, "XXXX" , "YYYY")
file1.close
set file2=fso.opentextfile("new.txt", 8, True)
file2.write new_str
file2.close
Автор: Anton_Y
Дата сообщения: 07.03.2007 17:29
tedhome
как по строкам прыгать? как сделать цикл от 1 строки до конца файла (eof)?
Автор: Smitis
Дата сообщения: 07.03.2007 22:40
Anton_Y

Цитата:
как по строкам прыгать? как сделать цикл от 1 строки до конца файла (eof)?

Издеваешься? Или лень справку почитать? Это же основы, без них даже начинать использовать WSH не стоит.
Автор: jONES1979
Дата сообщения: 08.03.2007 02:27
Anton_Y
щас насоветуем тебе
делай БЕЗ циклов

Код:
set fso=CreateObject("Scripting.FileSystemObject")
set file1=fso.opentextfile("istochnik.txt",1)
str=file1.readAll ' и весь файл будет в одной переменной
new_str=replace(str, "XXXX" , "YYYY")
file1.close
set file2=fso.opentextfile("new.txt", 8, True)
file2.write new_str
file2.close
Автор: Anton_Y
Дата сообщения: 08.03.2007 07:38
Smitis
спасибо за то что высказался..

jONES1979
спасибо тебе добрый человек =) буду пробовать.. файл действительно небольшой, но в utf-8 правда.. не покалечится ли чего?
Автор: jONES1979
Дата сообщения: 08.03.2007 22:06

Цитата:
но в utf-8 правда.. не покалечится ли чего?

это уж ты сам увидишь. я не знаю как vbs, дружит ли с utf-8 и прочими юникодами...
Автор: tedhome
Дата сообщения: 09.03.2007 09:17
а все-таки можно ли как-то при создании учетной записи
задать список пк, на которые user может логинится
и можно ли расставить галки в закладке Enviromental и Remote control?
Автор: ipmanyak
Дата сообщения: 09.03.2007 11:03
tedhome во вкладке ACCOUNT (по русски Учетная запись) кнопа - LOG TO - Вход на - тама добавляй компы, с которых юзер может логиниться
Автор: tedhome
Дата сообщения: 09.03.2007 11:23
Скрипт по добавлению пользователей в ad у меня есть.
Руками то понятно где .
В LogTo в поле computer name влезает 15 символов.
Удается записать только 3 рабочих места через точку с запятой.
А у меня туды нужно 100 рабочих мест забить.

А скриптами то можно?
К тому же править 100 раз закладку Enviromental и Remote control как-то трудоемко, так как они не доступны при работе c группой учетных записей.
Автор: ipmanyak
Дата сообщения: 09.03.2007 12:14
tedhome И зачем точки запятые ? Добавляй по одному по кнопе Добавить. Скриптами само собой можно, но где их искать готовые ? Самому придется писать. А тебе не кажется странным, что юзер будет бегать по 100 станциям и логиниться на них? Не проще вообще не указывать компы, на которых можно логиниться?
Автор: tedhome
Дата сообщения: 09.03.2007 13:30

Странно, но руководство компании считает что к остальным 600 компьютерам компании эти 100 не должны иметь доступ. Пойду скажу им что они неправы.


Добавлено:
Кажися нашел http://www.motobit.com/help/usrmgr/cl1.htm

Для тех кому интересно.
computername="pc1,pc2"
objUser.Put "userWorkstations", computername

а тут можно узнать как настраивать другие закладки.
http://www.activexperts.com/activmonitor/windowsmanagement/scripts/terminalservices/terminal/#MTSEPUA.htm
Автор: korol8112
Дата сообщения: 14.03.2007 17:32
Здравствуйте. Есть скрипт, проблема в том что группу выводит только с правами администратора, под пользователем не работает.

Set WshNetwork = CreateObject("WScript.Network")
user = WshNetwork.UserName
domain = wshNetwork.userdomain
WScript.Echo user
WScript.Echo domain

adspath = "WinNT://" & domain & "/" & user
set adsobj = GetObject(adspath)
' Вызов других подпрограмм based on the Windows NT group of the user
for each prop in adsobj.groups
select case prop.name
case "Администраторы домена"
WScript.Echo "Группа Администраторы Домена"
case "Info_2"
WScript.Echo "Группа Info_2"
end select
next
Автор: WSQ
Дата сообщения: 14.03.2007 23:48

Цитата:
а все-таки можно ли как-то при создании учетной записи задать список пк, на которые user может логинится... у меня нужно 100 рабочих мест забить.
Я делал без скриптов с помощью политик Active Directory контролем за локальной группой Пользователи, опытные_пользователи, администраторы.
Создал политику с "группами ограниченного доступа" для локальной группы "Пользователи" в составе "нормальные юзеры" и вторую политику для группы "Пользователи" - "пользователи домена". Политики навесил на контейнеры с компами - одну на важные компы, вторую на оставшиеся. Когда политики применились - в группе локальных пользователей осталась только установленная группа.

На тех компах, где в группе "пользователи" только группа "нормальные юзеры" пользователь, не входящий в эту группу просто не сможет залогиниться...
Когда много компов разбитых на 2-5 группы - политиками наверное проще.



Цитата:
Стоит задача ... текстовый файл, найти все последовательности XXXX, заменить их на YYYY
а вот ещё 2 варианта (не WSH):
1. утилита sed - Windows версия sed -e "s/XXXX/YYYY/g" -e "s/XX2/YYY/g" file1 > file2
2. используя CMD - http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=0&limit=1&m=3#1

Автор: Staric
Дата сообщения: 15.03.2007 17:38
Вот решил тоже автоматизировать всё что можно и возник вопрос. Хочу разделить компьютеры на разных территориях по своим OU. Обходить каждую территорию смотреть у кого какое имя компьютера и руками переносить в определенную OU лениво.. Всех же много... А как сделать что бы по каким либо параметрам (в моём случае параметром будет сеть 192.168.1.0/24) перенести их автоматически в нужную OU. Логично пользователь логиниться выполняется скрипт, смотрит подсеть и переносит комп.. Если комп уже там то не делает ничего...

И кстати у меня имена компов очень часто меняються.. И к сожалению оказалось очень много записей компьютеров в домене которые давно не существуют.. Можно как то это отследить и удалить то что несуществует... А то хочу порядок навести..

Заранее спасибо..
Автор: begem0t
Дата сообщения: 16.03.2007 14:11
такой скрипт мониторит директорию и сообщает об удаленных файлах
как его заставить сообщать также имя юзера, который удалил?

Код: strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")

Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 10 WHERE " _
& "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
& "TargetInstance.GroupComponent= " _
& "'Win32_Directory.Name=""c:\\\\scripts""'")

Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
Автор: Teo
Дата сообщения: 16.03.2007 17:11
привет всем!

есть задача: нужно переназначать буквы дискам в "правильном" порядке, то есть порядке подключения, а не наличия загрузочного раздела
то есть, если на втором харде имеется загрузочный раздел, то он станет диском D (предполагая, что на первом больше загрузочных разделов нет), а должен быть диском Е

подумав, я нашёл несколько решений
1. DiskPart -s scenario.txt
Без парсера команды list тут не обойтись
2. Правка реестра HKLM/System/MountedDevices - пока не пробовал, хз, заработает ли
3. VBScript - пока нашёл ток метод GetDrive для объекта Drive
SetDrive видимо, просто не существует

как просто решить такую задачу

P.S. с ужасом думаю, что парсер писать, видимо придётся, на вбс или jscript
на никсах это бы не было проблемой, но тут....
Автор: archimed7592
Дата сообщения: 19.03.2007 03:21
как передать все параметры в прогу\скрипт?
к примеру
program %1 %2 %3 %4 %5 %6 %7 %8 %9
передаст только первые 9...а если их больше? м. б. есть какой-нибудь способ передать всё сразу?
Автор: Smitis
Дата сообщения: 19.03.2007 11:05
archimed7592
Я так понимаю, речь идёт о командной строке и командных файлах. Тогда так: program %*
И ещё - читать, читать и ещё раз читать документацию!
Автор: archimed7592
Дата сообщения: 19.03.2007 11:25
Smitis, эээ...ну вот я пытался по аналогии с sh (echo $*), но на
echo %* он мне выводил Echo is ON ) подумал, что не подходит....

Цитата:
И ещё - читать, читать и ещё раз читать документацию!
а вот в какой документации это написано? по форуму искал - ничё не нашёл...
Автор: gap5
Дата сообщения: 22.03.2007 10:39
Товарищи, подскажите, какие атрибуты и как - надо задачать через VBS для папки, дабы у нее изменилась иконка? Т.е. стал обрабатываться файл desktop.ini лежащий внутри?
Автор: Smitis
Дата сообщения: 22.03.2007 11:02
archimed7592

Цитата:
а вот в какой документации это написано? по форуму искал - ничё не нашёл...

Виндозный файл справки ntcmds.chm
Цитата:

Цитата:
Параметр %* ссылается на все аргументы, которые передаются пакетному файлу, за исключением параметра %0.
Автор: Devil66
Дата сообщения: 22.03.2007 11:08
Как запустить JScript на удаленной машине?
Нужно удаленно подключать принтеры. Сам сценарий подключения написан в addprn.js и требуется удаленно запускать его с параметрами, описывающими пути к принтерам.

Сам батник:

Код: echo Connecting
net use \\comp\ipc$ > NUL
if NOT ERRORLEVEL == 0 GOTO NETERROR

echo Copying addprn locally
COPY addprn.js \\comp\C$ > NUL

echo Launching addprn
PSEXEC \\comp -s cscript C:\addprn.js "\\server\HP1200"

echo Tidying Up
DEL \\comp\C$\addprn.js

echo Disconnecting
net use \\comp\ipc$ /d > NUL
Автор: Devil66
Дата сообщения: 23.03.2007 14:19
Не могу заставить psexec запускать удаленно vbs и js скрипты.
синтаксис:

Код: PSEXEC \\remotecomp -e cmd.exe /c cscript.exe //B C:\addprn.js

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

Предыдущая тема: BackUp Win2003Serer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.