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

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

Автор: Jovanotti
Дата сообщения: 22.03.2005 16:05
merlkerry

Цитата:
лучше заюзать метод WScript.Network.EnumNetworkDrives()

Во во, это и имел в виду

ALL
Предлагаю размешать ссылки на Ваши ОРИГИНАЛЬНЫЕ скрипты
в шапке. Начинаю со своих "творений"

Смена букв разделов Е и D местами
(скрипт из двух частей dtoe.cmd и change.vbs)
[more=# dtoe.cmd #]

Код: @echo off
rem echo "Warning !!! Letters D (CDROM) and E (2th) will be changed"
rem pause
reg export HKLM\System\MountedDevices c:\devices.reg /NT4
copy change.vbs c:\change.vbs
c:
cd c:\
wscript.exe c:\change.vbs
reg import c:\devices2.reg
del change.vbs
del devices.reg
del devices2.reg
exit
Автор: AlexSSS
Дата сообщения: 22.03.2005 16:11
Логон скрипт прописывает персональную папку пользователю в "Personal" ключей
"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"

захожу в My Documents и попадаю в старую персональную папку. Доступ к прописанной папке получается только после logoff/logon пользователя

каким образом заставить Windows обращаться к прописанной папке, а не к той, которая хранится где-то в кэше?
Автор: Laurent
Дата сообщения: 22.03.2005 22:31
Подскажите, уважаемые, а можно ли воспользоваться VBScript для работы с FTP-протоколом?

Скажем, необходимо установить соединение с сервером, проверить существование заданного файла, узнать время создания и размер, в случае необходимости закачать файл на сервер, скачать с сервера и т.д.?
Автор: merlkerry
Дата сообщения: 22.03.2005 23:19
Laurent
ну тока разве что и с ипользованием ftp.exe + WScript.Shell.Run()
Автор: igor_andreev
Дата сообщения: 22.03.2005 23:25
Laurent
Встроенные средства WSH бедноваты, узнать, есть ли файл на фтп или скачать его еще можно. А вот если установишь Chilkat FREE FTP ActiveX - то возможности VBScript расширяться до уровня среднестатистического фтп-клиента. Все перечисленное легко будет делать

Цитата:
необходимо установить соединение с сервером, проверить существование заданного файла, узнать время создания и размер, в случае необходимости закачать файл на сервер, скачать с сервера и т.д.?

http://www.chilkatsoft.com/ChilkatFtp.asp

Автор: merlkerry
Дата сообщения: 22.03.2005 23:35

Цитата:
вот если установишь Chilkat FREE FTP ActiveX - то возможности VBScript расширяться до уровня среднестатистического фтп-клиента.


я бы 3 раза подумал, прежде чем устанавливать чей-то ActiveX ... - я не нашел у них на сайте исходников ...
Автор: igor_andreev
Дата сообщения: 23.03.2005 00:10
merlkerry
Это не "чей-то", Chilkat Software делает очень качественные ActiveX, рекомендую. А какие могут быть исходники, если у них почти вся продукция платная и довольно таки дорогая? Хоть FTP ActiveX бесплатным оставили, респект им за него. Скачай, тебе понравится
Автор: AlexSSS
Дата сообщения: 23.03.2005 08:05
Chilkat очень рекомендую, я сейчас использую ChilkatMail2 для каталогизации мейл архивов - после нахождения этих Active-X код программы сократился во много раз, при этом она стала ГОРАЗДО надежнее и читабельнее.
Автор: merlkerry
Дата сообщения: 23.03.2005 09:59
чень рекомендую
А я очень-очень рекомендую JudoScript, очень удобная вещь, простая и понятная - с исходниками. Ссылку добавил в шапку.

вот пример работы с FTP


Код: // Creating connection and setting connection mode...
o = ftp( #args[0] , #args[1] );
o.setConnectMode( 'PASV' );

o.login( #args[2] , #args[3] ); // Trying to log in...

o.chdir( #args[5].getFilePath() ); // Trying to change the local dir

o.put( #args[4] , #args[5].getFileName() ); // Trying to put file...

// Trying to get a listing of all files
a = o.dir( #args[5].getFilePath() );
for x in a { println x; }
Автор: Laurent
Дата сообщения: 23.03.2005 14:05
igor_andreev
AlexSSS
merlkerry

Спасибо вам огромное ))) Слушайте, я в этой теме совсем новичок, VBScript'ом начал пользоваться с начала этой недели - жизнь заставила, с ISA Server работаю...

А вопрос в следующем - как вообще можно разобраться в этих дебрях? Как я могу узнать, что я могу делать с помощью стандартных объектов ActiveX (или.. как они там называются, я пока еще не понял) ?

Документацию к Windows Scripting 5.6 уже скачал... только... в голове бардак такой, откуда какие объекты... Откуда что начинает использоваться... Как-то это вообще структурируется по темам?

Шапку читал, но особой методологии не надблюдаю.
Автор: AlexSSS
Дата сообщения: 23.03.2005 14:41
www.networkdoc.ru
Отличный сайт, на котором есть и большой раздел по скриптам.
Windows Script Host (WSH)
http://www.networkdoc.ru/insop/whs.html
для начинающих - самое-то
Автор: alecsandrb
Дата сообщения: 23.03.2005 17:07
В ходе экспериментов с WSH смог сделать следующий скрипт,
смысл которог в следующем: в зависимости от пользователя ему подключаются
несколько общих и один личный сетевой диск, путь к личному диску прописан
в строке <Профиль> и оттуда считывается.
На сервере для самого Администратора скрипт работает и все делает, а когда я указываю его в политике домена в автозагрузке
(GPO(Defaul Domain Policy)->Конфигурация пользователя->Конфигурация Windows->Сценарии входа\выхода->Вход) то на другом ПК домена при входе любым пользователем домена не срабатывает, по крайней мере дисков после входа нет.
После запуска этого скрипта вручную с сервера на рабочей станции получаю такую ошибку:
Сценарий: \\domain\netlogon\script.vbs
Строка: 18
Символ: 3
Ошибка: Table does not exist
Код: 80040E37
Источник: Provider
Кто-нибудь может помочь разобраться почему скрипт не срабатывает или же выдает сообщение о ошибке?

script.vbs
---------------------------------------
Option Explicit
Dim oArgs,oDrives,WshNetwork,i, ss, objUser, homepath, username, WshShell
dim objConnection, objRecordSet, CommandText, strUsers
' определение текущего UserName
Set WshShell = CreateObject("Wscript.Shell")
UserName = WshShell.ExpandEnvironmentStrings("%username%")

' получаем distinguishedName для текущего пользователя
Set objConnection = CreateObject("ADODB.Connection")
objConnection.provider = "ADsDSOObject"
objConnection.Open ("Active Directory Provider")

' Запрос информации по учетной записи пользователя
CommandText = "Select cn, name, distinguishedName, canonicalName, sAMAccountName"
CommandText = CommandText + " from 'LDAP://dc=dom1,dc=dom2,dc=dom3'"
CommandText = CommandText + " where sAMAccountName='" + UserName + "'"
Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open CommandText, objConnection
strUsers = objRecordset.fields("distinguishedName").Value

' получаем данные запроса о конкретном пользователе
set objUser = GetObject("LDAP://" & strUsers)
homepath = objUser.Get("profilePath")
' переменная profilePath = "\\domain\personals\ou1\ou2\$username"
' структура каталогов создана, права на эту папку ($username) - полный доступ

' подключаем сетевые диски для пользователя
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oArgs=WScript.Arguments
Set oDrives = WshNetwork.EnumNetworkDrives
on error resume next
WshNetwork.MapNetworkDrive "Y:", homepath
WshNetwork.MapNetworkDrive "W:", "\\domain\common"
WshNetwork.MapNetworkDrive "Z:", "\\domain\programs"

'*** End

Автор: AlexSSS
Дата сообщения: 23.03.2005 18:04
1.
> Ошибка: Table does not exist
эта ошибка выскакивает, если неправильно прописан путь в LDAP, вставь свой домен и конкретно эта ошибка уйдет
CommandText = CommandText + " from 'LDAP://dc=dom1,dc=dom2,dc=dom3'"

2.
> Set WshShell = CreateObject("Wscript.Shell")
> UserName = WshShell.ExpandEnvironmentStrings("%username%")
Это вариант годен только для Windows NT/2000/XP
у Win9X переменной окружения %username% нет

дальше 20 строки я не проверял ;o)
Автор: kuvsh
Дата сообщения: 23.03.2005 18:13
У меня возник вопрос один в ходе написания батничка. Каким образом можно удалить каталог с русским названием. А точнее папка называется ВСЕМ ВРЕМЕННАЯ.
rd d:\ВСЕМ ВРЕМЕННАЯ
не проходит (хотя d:\>cd ВСЕМ ВРЕМЕННАЯ пашет нормально).
Заранее спасибо за ответ
Автор: kibkalo
Дата сообщения: 23.03.2005 20:22
rd "d:\ВСЕМ ВРЕМЕННАЯ"
Автор: alecsandrb
Дата сообщения: 24.03.2005 05:13
AlexSSS

1. В том то и дело что у меня все прописано так как должно быть для моего домена.

Я думал чо это связано с тем что на этапе входа пользователя в систему,
когда он вводит свои имя и пароль этот скрипт уже выполнился поэтому у меня
он и не сработал (неизвестен был параметр username).
Если я прав то где это можно было бы проверить так чтобы имя для пользователя уже точно было бы прописано в параметре username.

2. Я проверяю на рабочей станции с Windows XP Sp2. которая включена в домен domain.
Автор: GOODmen
Дата сообщения: 24.03.2005 06:00
прошу сильно не ругаться, но почему же не работает кусок логон-скрипта:
=================================
Set oNet=WScript.CreateObject("WScript.Network")
'WScript.Sleep 5000
do while (oNet.UserName="")
WScript.Sleep 500
loop
sUserName=oNet.UserName
=================================
Клиенты - 98 виндовс, мигрируем с новелла 3.12, скопировал папки на 2000 сервер, теперь каждому юзеру надо подключить свои сетевые диски. Чтоб увидеть реакцию запускаю из netlogon.bat wscript //nologo \\server\mapdrives.vbs. Он говорит - "запрашиваемая оперция не была выполнена, так как пользователь не подключен к сети. указанная служба не существует". Если раскомментировать WScript.Sleep 5000, то работает. Если запустить cscript \\... не работает ни так ни эдак. Опять же WScript.Sleep работает токо под wsh5.6, это надо всех клиентов (а их 300 штук!) апгрейдить. М-да... Как будто не работает цикл. Но все же строго по инструкции, в этом же топике все написано На XP всё это работает как надо.
Ранее пробовал втыкать скриптом радмина - на 98 на ура, на ХР под опытным пользователем так и не удалось, пришлось забить. э-эх...
Автор: AlexSSS
Дата сообщения: 24.03.2005 12:30
alecsandrb
вставь в скрипт промежуточный вывод значений, которые надо проверить

Wscript.Echo UserName
или
MsgBox(UserName)

и все таки проверь имя домена, может перепутал местами dom1,dom2?

у меня эта ошибка выскакивала как раз в случае неправильного указания домена
кроме того, когда ты запускал скрипт вручную, UserName у тебя был стопроцентно определен

я тоже проверил твой скрипт на XP SP2
Автор: alecsandrb
Дата сообщения: 24.03.2005 14:06
AlexSSS

Можно ли ограничить/запретить выполнение скриптов или выполнение запросов к LDAP в политиках домена? Если да то где?
Дело в том что загрузившись администратором домена на рабочей станции я могу выполнить этот скрипт из NetLogon, а если загружаюсь под пользователем домена то при выполнении скрипт выдает ошибку : "Невозможно получить данные из кеша Active Directory"
Автор: AlexSSS
Дата сообщения: 24.03.2005 14:17
alecsandrb
на каком именно запросе вылетает эта ошибка?
думаю тут дело не в политиках, а в правах доступа к веткам AD.
по умолчанию, в AD все пользователи могут видеть почти все. Когда ты создавал OU, то ты не менял на них права?
Автор: alecsandrb
Дата сообщения: 24.03.2005 14:22
Можешь конкретно указать где?
При создании OU я использовал политики домена по умолчанию, но правда мог и поменять в них что-то о чем впоследствии благополучно забыл.

Добавлено:
Сейчас проверил настройки политики: практически везде установка по крайней мере пока - не задана.
Параметр - Default Domain Policy -> Конфигурация пользователя -> Административные шаблоны-> Рабочий стол -> Active Directory - все параметры: не задана
Больше нигде не смог ничего найти.
Для всех OU применена Default Domain Policy.

Добавлено:
Поэкспериментировал немного с настройками политик домена получил следующее:
- прописал еще один bat файл при входе пользователя
его содержимое:
------
net use /delete /yes
net use s: \\domain\netlogon
------
- в основном батнике script.vbs дописал wscript.echo username и homepath

Результат при входе пользователя диск S есть, остальных нет и никаких сообщений тоже нет. Если запустить script.vbs c S: то он выполняется нормально и диски подключаются и сообщения показываются.
Как сделать чтобы основной батник выполнялся все-таки при входе пользователя
а не запускать его самому вручную у каждого?
Автор: AlexSSS
Дата сообщения: 24.03.2005 15:19
alecsandrb
> Для всех OU применена Default Domain Policy.
Я говорил об Security, а не об политике.
Автор: leputain
Дата сообщения: 27.03.2005 05:05
предлагаю свой скрипт (.js) для установки софта.
[more=листинг]
var strDistr = ".\\";
var blnSetup = true;
var strSetup = strDistr + "apollo37zi.exe /SILENT";
var blnSetupUp = false;
var strSetupUp = strDistr + "apollo37UP.exe /SILENT";
var blnUpdate = true;
var strUpdate = strDistr + "update\\";
var strProgamFiles = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles%");
var strInstall = strProgamFiles + "\\apollo\\";
var strCheck = strInstall + "apollo.exe";

fso = new ActiveXObject("Scripting.FileSystemObject");

if (!fso.FileExists(strCheck))
{
if (blnSetup)
{
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec(strSetup);
while (oExec.Status == 0) { WScript.Sleep(100); }
}

if (blnSetupUp)
{
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec(strSetupUp);
while (oExec.Status == 0) { WScript.Sleep(100); }
}

if (blnUpdate)
{
f = fso.GetFolder(strUpdate);

fc = new Enumerator(f.SubFolders);
for (; !fc.atEnd(); fc.moveNext()) fso.CopyFolder(fc.item(), strInstall);

fc = new Enumerator(f.files);
for (; !fc.atEnd(); fc.moveNext()) fso.CopyFile(fc.item(), strInstall);
}
}[/more]

strDistr = ".\\"; путь к дистрибу, например \\\\SERVER\\softinst\\winrar\\, на js слыши удваиваем
blnSetup = true; ставим через сетап?
strSetup = strDistr + "apollo37zi.exe /SILENT"; если ставим через сетап, то указываем сетап с параметрами тут
blnSetupUp = false; есть сетап апдейта?
strSetupUp = strDistr + "apollo37UP.exe /SILENT"; если есть сетап апдейта, то его имя и параметры
blnUpdate = true; надо что-то особое скопировать поверх и/или в папку установленной программы
strUpdate = strDistr + "update\\"; если надо, то откуда
strProgamFiles = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles%"); как правило ставим в Program Files
strInstall = strProgamFiles + "\\apollo\\"; перед тем как ставить, надо проверить, не установлен ли уже софт, так вот это - папка куда ставится софт, т.е. где надо проверять
strCheck = strInstall + "apollo.exe"; проверяем на наличие файла - если есть, то уже установлена софтина и тогда ничего не делаем.
Автор: murmidonne
Дата сообщения: 29.03.2005 09:41
Зловредный юзер, заполучивший права локального админа, удалил шару ADMIN$ с папки C:\WINDOWS в виндах ХР. Как вернуть?
Автор: Jovanotti
Дата сообщения: 29.03.2005 14:55
murmidonne
А причем здесь этот топ ?
Ну раз просишь пожалуйста

Код:
net share admin$=c:\windows
Автор: murmidonne
Дата сообщения: 30.03.2005 08:21
Создать эту шару средствами удалённого администрирования (Управление компьютером) не удаётся. Вот и подумал, что можно решить проблему при помощи скрипта.

Возник ещё один вопрос: как с помощью скрипта добавить в локальную группу админов некую доменную группу? Батник с командой net group Администраторы <domain_group> /ADD не работает.

Решение:

On Error Resume Next
Set ws = WScript.CreateObject ( "WScript.Shell" )
compname = ws.ExpandEnvironmentStrings ( "%COMPUTERNAME%" )
Set adGrp = GetObject ( "WinNT://" & compname & "/Администраторы,group" )
adGrp.Add ( "WinNT://<домен>/it,group" )
Автор: Jovanotti
Дата сообщения: 30.03.2005 12:43
Всем скриптологогам
вышла Network Automation AutoMate 6.0.0
- автоматизация процессов управления
Сам не пробовал, но судя по описалову вещь стоящая.
Где брать думаю напоминать не надо ?
Шапку подправил ...


Добавлено:
murmidonne

Цитата:
как с помощью скрипта добавить в локальную группу админов некую доменную группу

В шапке есть ссылка
Microsoft Technet Scriptcenter

Цитата:
Создать эту шару средствами удалённого администрирования (Управление компьютером) не удаётся.

Что значит не удается ?
Создай оснастку mmc.exe ----> Computer Management --->
добавь удаленный комп.
Домен как я понял уже поднят ?
Автор: murmidonne
Дата сообщения: 30.03.2005 13:57
При завершении визарда создания шары вылетает следующее сообщение: При создании общей папки "клиенты Microsoft Windows" произошла следующая ошибка: Параметр задан неверно.
Автор: VLkin
Дата сообщения: 30.03.2005 15:56
А можно ли скирптом создать ODBC источник?
Автор: AlexSSS
Дата сообщения: 30.03.2005 16:08
VLkin
> А можно ли скирптом создать ODBC источник?
как минимум, можно подключитьodbccp32.DLL и воспользоваться его функцией SQLConfigDataSource

Может есть и более более простые варианты

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Зеркалирование дисков Win2000


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