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

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

Автор: AlexSSS
Дата сообщения: 15.02.2005 09:51
inew
сделай домен и не парься ;o)
Автор: AlexisZP
Дата сообщения: 18.02.2005 11:48
Интресует вопрос - как в зависимости от имени залогинившегося пользователя(имени компьютера - как вариант) исполнять разные команды в скрипте автологона на vbs ?
Домен на win2000, около 50 пользователей.
Что подскажете?
Автор: FreemanRU
Дата сообщения: 18.02.2005 12:18
AlexisZP
1.

Код:
Dim WshShell, UserName

Set WshShell = Wscript.CreateObject("Wscript.Shell")
UserName = WshShell.ExpandEnvironmentStrings("%username%")
if UserName = Pupkin then
.......
Автор: AlexSSS
Дата сообщения: 23.02.2005 12:59
нужно получить список пользователей группы MKT
1. Запрос через провайдера LDAP
set objGroup = GetObject ("LDAP://cn=MKT,ou=Groups,dc=dom1,dc=dom2")
objGroup.GetInfo
For Each objUser In objGroup.Members
' выводится десяток пользователей
Next

2. Запрос через провайдера WinNT
set objGroup = GetObject ("WinNT://dom1.dom2/MKT")
objGroup.GetInfo
For each objMember in objGroup.Members
' Выводится полный список группы, несколько десятков пользователей
Next

Почему в случае запроса через LDAP выводится только часть пользователей группы?
Автор: Ducky
Дата сообщения: 24.02.2005 14:55
Не подскажите, как изменить дату последней модификации файла каким-нибудь скриптом ?
Автор: igor_andreev
Дата сообщения: 24.02.2005 17:18
Ducky
У автора RegShot есть консольная утилитка sft.exe http://the7thlab.mybesthost.com/
Запускай из батника или скрипта и меняй.
Автор: AlexSSS
Дата сообщения: 25.02.2005 16:16
Можно ли каким-либо образом сделать запрос из AD через LDAP с условием по маске?

Группы в AD имеют название "FIRM_Otdel". Мне нужно получить список групп подотделов по маске "FIRM1*" или групп секретарей по маске "*Secretary"
Пока делаю это, делая выборку всех групп и дальнейшим перебором.

Пробовал использовать ADODB, но там конструкция LIKE для LDAP почему-то не поддерживается

Нашел решение. Конструкция LIKE в запросе SELECT не поддерживается, зато у рекордсета поддерживается свойство FILTER с LIKE

Set objConnection = CreateObject("ADODB.Connection")
objConnection.provider = "ADsDSOObject"
objConnection.Open ("Active Directory Provider")

CommandText = "Select cn, name"
CommandText = CommandText + " from 'LDAP://DC=dom1,DC=dom2'"
CommandText = CommandText + " where objectClass='Group'"
CommandText = CommandText + " ORDER BY cn"

Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open CommandText, objConnection

objRecordset.Filter = "cn like 'firm_%'"
While Not objRecordset.EOF
msgbox(objRecordset.fields("cn").Value)
objRecordset.MoveNext
Wend
Автор: Mishgunnn
Дата сообщения: 02.03.2005 10:07
2 Inew

Для смены пароля примерно так действоавть надо (см ниже). Возможно придется доработать: сделать циклы, если много компов и пользователей, проверку компа на доступность (пинг, например), обработку ошибок.

'Смена пароля. В переменной compname - имя компа, вместо Администратор подставь пользователя
Set objUser = GetObject("WinNT://" & compname & "/Администратор, user")
'типа здесь пассворд задаем
objUser.SetPassword pass
If Err <> 0 Then
comperr.WriteLine(compname)
Err.Clear
End If
'сохраняем изменения
objUser.SetInfo
If Err <> 0 Then
comperr.WriteLine(compname)
Err.Clear
Автор: Di Man
Дата сообщения: 05.03.2005 15:25
на удалеНой машине CompFake запускаеЦа скрипт ScriptFake
запускаеЦа скриптом RunRemote таким образом:

//////////////////////////////
RunRemote.wsf
//////////////////////////////

ScriptFake = "C:\\ScriptFake.wsf";
CompFake = "Fake";

...
Controller=WScript.CreateObject("WshController");
RemScript=Controller.CreateScript(ScriptFake,CompFake);
RemScript.Execute();
...

while (RemScript.Status!=2)
WScript.Sleep(100);
WScript.Echo("Выполнение удаленного сценария завершено");

//////////////////////////////

ScriptFake должен создать файл отчета(допустим в Exel) с результатами своего выполнения и сохранить его на сервер в шару ShareFake...

Проблема: сохранить отчет получаеЦа только на локальные диски CompFake...
в принципе только они и доступны в коллекции Drives....
замапить ShareFake как новый диск не получаеЦа

//////////////////////////////
ScriptFake.wsf
//////////////////////////////

SomeDrive="X:";
ShareFake="\\\\server\fake$";

...
WshNetwork=WScript.CreateObject("WScript.Network");
WshNetwork.MapNetworkDrive(SomeDrive,ShareFake);
...

//////////////////////////////

если RunRemote.wsf запустить на CompFake то сеть видна и Exel сохраняет отчет на сервер напрямую (без мапинга хотя и он в этом случае успешно проходит)

//////////////////////////////
ScriptFake.wsf
//////////////////////////////

XL=WScript.CreateObject("Excel.Application");
....
XL.ActiveWorkbook.SaveAs(ShareFake+"\\report.xls");
XL.Quit();

//////////////////////////////

после выполнения скрипта и вывода об успешном выполнения в task-ах CompFake продолжает висеть Exel...

Вопрос: как запустить скрипт на удалеНой машине и результат его выполнения записать на машину в сети?

Автор: Refugee
Дата сообщения: 07.03.2005 20:59
Di Man

Цитата:
на удалеНой машине CompFake запускаеЦа скрипт ScriptFake

при этом на удаленную машину не передается пароль пользователя, запустившего скрипт, и он не может авторизоваться на сервере.


Цитата:
Вопрос: как запустить скрипт на удалеНой машине и результат его выполнения записать на машину в сети?

можно в скрипте вызвать WshNetwork.MapNetworkDrive( ..., пароль..)
а можно записать результат выполнения записать на локальный диск и скопировать на сервер со стороны сервера.

PS. получаеЦа, удалеНой - пиши по-человечески
Автор: Jovanotti
Дата сообщения: 14.03.2005 16:21
Di Man

Цитата:
Вопрос: как запустить скрипт на удалеНой машине и результат его выполнения записать на машину в сети?

Можно батником и утилитой remoteexec из комплекта pstools от Винтерналс
пара строчек кода
Автор: greenfox
Дата сообщения: 14.03.2005 18:40
Надо из группы всех её мемберов в эксель экспортнуть... нашёл скрипт на мс -е:

Код: On Error Resume Next

Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.GetInfo

arrMemberOf = objGroup.GetEx("member")

WScript.Echo "Members:"
For Each strMember in arrMemberOf
WScript.echo strMember
Next
Автор: AlexSSS
Дата сообщения: 14.03.2005 21:08
greenfox
если нужно просто список пользователей, то лови скрипт через другого провайдера

Sub test1()

Cells.Select
Range("A1").Activate
Selection.ClearContents

Set objGroup = GetObject("WinNT://dom1.dom2/Internet Mail")
objGroup.GetInfo
Row = 1
For Each objUser In objGroup.Members
Cells(Row, 1).Value = objUser.Name
Cells(Row, 2).Value = objUser.FullName
Row = Row + 1
Next

End Sub


Добавлено:
чтобы тебе разобраться в твоем скрипте, советую отключить On Error Resume Next - тогда ты сразу увидишь, где у тебя ошибки

> ("LDAP://cn=Internet Mail,ou=Users,dc=xxx,dc=ru")
Users - это cn, а не ou

> arrMemberOf = objGroup.GetEx("Internet Mail")
такого свойства у группы нет, надо все же
arrMemberOf = objGroup.GetEx("member")

Поставь на сервак или себе на комп
Windows 2000/2003 Support Tools, там есть ADSI Edit, с ее помощью можно в посмотреть всю структуру домена, кто куда входит и у кого какие свойства есть и чему они равны
Автор: greenfox
Дата сообщения: 15.03.2005 12:50
AlexSSS
ок, спасибо, работает по твоему варианту.

Цитата:
> ("LDAP://cn=Internet Mail,ou=Users,dc=xxx,dc=ru")
Users - это cn, а не ou
те правильно будет "LDAP://cn=Internet Mail,cn=Users,dc=xxx,dc=ru"!? (internet mail это группа в контейнере стандартном Users)
Цитата:
такого свойства у группы нет, надо все же
arrMemberOf = objGroup.GetEx("member")
ок, тогда получается что-то типа того
Код: Sub test1()

Cells.Select
Range("A1").Activate
Selection.ClearContents

On Error Resume Next

Set objGroup = GetObject _
("LDAP://cn=Internet Mail,cn=Users,dc=xxx,dc=ru")
objGroup.GetInfo

arrMemberOf = objGroup.GetEx("member")
Row = 1
WScript.echo "Members:"
For Each strMember In arrMemberOf
WScript.echo strMember
Cells(Row, 1).Value = objUser.FullName
Row = Row + 1
Next

End Sub
Автор: AlexSSS
Дата сообщения: 15.03.2005 13:57
совсем правильно так

Sub test1()
Cells.Select
Range("A1").Activate
Selection.ClearContents

Set objGroup = GetObject _
("LDAP://cn=Internet Mail,cn=Users,dc=xxx,dc=ru")
objGroup.GetInfo

arrMemberOf = objGroup.GetEx("member")
Row = 1
For Each strMember In arrMemberOf
Cells(Row, 1).Value = strMember
Row = Row + 1
Next
End Sub

чтобы лучше понимать, что именно и откуда берется, поставь себе
Windows Server 2003 Administration Tools Pack (или для 2000-го). В прошлом сообщении я неправильно указал его название.
Там в ADSI Edit можно посмотреть, что конкретно тебе должен выдать этот скрипт. Выбираешь домен, cn=Users, cn=Internet Mail, открываешь его и смотришь Attributes-->Optional-->member
там должен быть тот же список, что и Экселе

Но, лично у меня, в свойстве Member для многих групп пользователи не все, которые реально входят в эту группу. С чем это связано, я не знаю. Хотя домен работает без проблем и все пользователи получают все права, которые положены им по группам.

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

Sub test1()

Cells.Select
Range("A1").Activate
Selection.ClearContents

Set objGroup = GetObject("LDAP://cn=Internet Mail,ou=Users,dc=xxx,dc=ru")
objGroup.GetInfo
Row = 1
For Each objUser In objGroup.Members
Cells(Row, 1).Value = objUser.cn
Cells(Row, 2).Value = objUser.Name
Row = Row + 1
Next

End Sub

Что касается ссылок на документацию - напишу попозже, когда будет больше времени (ее надо всю искать)
Автор: greenfox
Дата сообщения: 15.03.2005 14:11
AlexSSS

Цитата:
Sub test1()
Cells.Select
Range("A1").Activate
Selection.ClearContents

Set objGroup = GetObject _
("LDAP://cn=Internet Mail,cn=Users,dc=xxx,dc=ru")
objGroup.GetInfo

arrMemberOf = objGroup.GetEx("member")
Row = 1
For Each strMember In arrMemberOf
Cells(Row, 1).Value = strMember
Row = Row + 1
Next
End Sub

он выводит в формате "CN=Вася Пупкин,CN=Users,DC=xxx,DC=ru" а надо бы что бы полное имя писал...

Цитата:
кстати, твоя задача может решаться и немного другим способом, плюс этого скрипта в том, что получаешь не просто названия пользователей, а обьекты пользователей, с которых можно снимать любые свойства
ну это как в первом варианте, который ты приводил, разница лишь в том, что там было
Цитата:
GetObject("WinNT://dom1.dom2/Internet Mail")
кста, а чем в корне отличие от такого варианта
Цитата:
GetObject("LDAP://cn=Internet Mail,ou=Users,dc=xxx,dc=ru")
!?


Автор: AlexSSS
Дата сообщения: 15.03.2005 14:22
Первый вариант засовывает в массив пользователей в том виде, котором ты их получил ("CN=Вася Пупкин,CN=Users,DC=xxx,DC=ru") ;o)
arrMemberOf = objGroup.GetEx("member")

второй вариант перебирает обьекты пользователей, у которых можно взять нужные аттрибуты
вставь его в эксель и увидишь сам разницу.

Добавлено:
Вопрос всем, сам уже не знаю куда копать.

Почему в ADSI Edit и Active Directory Users and Computers данные могут не совпадать???

Active Directory Users and Computers - есть группа Group, в которой 10 пользователей.
ADSI Edit - cn=Group, аттрибут Member - всего два пользователя.

Active Directory Users and Computers - User1 входит в Group1
ADSI Edit - cn=Group, аттрибут Member - этот пользователь отсутствует
ADSI Edit - cn=User1, аттрибут MemberOf - группа Group1 в ней отстутствует

При этом домен работает без проблем, все пользователи имеют все права, которые прописаны в Active Directory Users and Computers.

Подозреваю, что одна из причин может быть в том. что у меня домен работает в Mixed Mode. Но как сделать так, чтобы ADSI показывал актуальные значения???
Автор: leputain
Дата сообщения: 16.03.2005 14:09
вопрос

jscript:

Код: var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;

var arrComputers = new Array("HOME","ADMIN1");
var strLogsPath = "\\\\HOME\\eventlog\\";

for (i = 0; i < arrComputers.length; i++)
{
var objWMIService = GetObject("winmgmts:{(Backup,Security)}\\\\" + arrComputers[i] + "\\root\\CIMV2");
WScript.Echo(arrComputers[i] + ": connected");
var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTEventlogFile", "WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);
WScript.Echo(arrComputers[i] + ": WMI Query");
var enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext())
{
var objItem = enumItems.item();
WScript.Echo(arrComputers[i] + ": " + objItem.LogfileName);
var strBackupFile = strLogsPath + arrComputers[i] + "_" + TimeNow() + "_" + objItem.LogfileName + ".evt";

try { objItem.BackupEventLog(strBackupFile) }
catch(e) { WScript.Echo(strBackupFile + " couldn't be saved."); }

try { objItem.ClearEventLog() }
catch(e) { WScript.Echo(objItem.LogfileName + " couldn't be cleared."); }

}
}


function TimeNow()
{
d = new Date();
var strNow = "";
strNow += LeadingZero(d.getFullYear()) + "_";
strNow += LeadingZero((d.getMonth()) + 1) + "_";
strNow += LeadingZero(d.getDate()) + "_";
strNow += LeadingZero(d.getHours()) + "_";
strNow += LeadingZero(d.getMinutes()) + "_";
strNow += LeadingZero(d.getSeconds());
return(strNow);
}

function LeadingZero(intNum)
{
if (10 > intNum)
{ intNum = "0" + intNum;}
return(intNum);
}
Автор: Garreth
Дата сообщения: 16.03.2005 19:27
Ситуация такая.
По разным причинам необходимо сменить ip-сеть. Соответственно необходимо сменить настройки Outlook Express на клиентских машинах (т.е. просто поменять Ip-адреса SMTP и POP3 серверов). Парк разношерстный - есть 98, 2000 и XP. Версии OE 5 и 6. В сети домен на 2003, но режим 2000. Конечно, можно пройтись по всем машинам и руками прописать. Заодно с людьми пообщаться. Но! 1. Машин аж под 300 штук. 2. Да и неспортивно как-то. Если кто-то уже пробовал сделать это, то поделитесь решением. Или просто подскажите.
Автор: AlexSSS
Дата сообщения: 16.03.2005 20:14
Garreth
Я делал что-то подобное почти год назад, когда переходил на новую сетку (новый поддиапазон)
С Outlook Express это делается достаточно просто. Пишется логон скрипт, который проверяет во всех ветках
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts]
значения POP3 Server и SMTP Server
Если они старые, то переписываются на новые.

IMHO, более грамотно будет прописать в DNS алиас MAIL на мейл сервер и прописать в качестве нового адреса MAIL.DOM1.DOM2

PS. Для Outlook 2000 адреса перепрописываются аналогично, но в другой ветке. Для Outlook 2003 где прописаны адреса серваков я не нашел, для Outlook XP - не помню

Добавлено:
leputain
> а удаленный комп не скидывает.
> я прочел на msnews.public.script.remote, что удаленно
> исполняемый скрипт не имеет доступа к сетевым ресурсам.
> что исправить, чтобы работало?
Я предпочитаю запускать любые проги на других компах через PsExec от
PsTools
Copyright © 1999-2004 Mark Russinovich
Sysinternals - www.sysinternals.com

Категорически рекомендую этот пакет программ, PsTools, всем админам ;o)
Автор: Garreth
Дата сообщения: 16.03.2005 21:00
AlexSSS
спасибо за ответ

Цитата:
Пишется логон скрипт, который проверяет во всех ветках
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts]

А вот здесь можно поподробнее.
Автор: AlexSSS
Дата сообщения: 16.03.2005 21:18
Garreth
Открой Regedit на машине, на которой есть мейловая учетная запись и в ветке HKEY_CURRENT_USER дай поиск по имени этой учетной записи (или IP почтового сервера).
Поиском найдешь, где именно в реестре находятся учетные записи. Для OE6 это будут
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000001]
....
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\000000XX]
На каждую учетную запись один ключ (KEY). На этом ключе есть стринговые значения
POP3 Server
SMTP Server
Вот именно их тебе и надо проверять и при необходимости переписывать новые значения.

Если раньше с реестром скриптами не работал, будет проще не проверять все имеющиеся KEY в [HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\], а проверить наличие
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000001]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000002]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000003]
(столько, сколько у пользователей может быть максимально учетных записей)

PS. Если POP3 Server и SMTP Server на ключе отсутствуют, значит это не почтовая учетная запись. таким же образом прописываются новостные (newsgroup) учетные записи.
Автор: Garreth
Дата сообщения: 16.03.2005 21:28
AlexSSS

Цитата:
Открой Regedit на машине, на которой есть мейловая учетная запись и в ветке HKEY_CURRENT_USER дай поиск по имени этой учетной записи (или IP почтового сервера).
Поиском найдешь, где именно в реестре находятся учетные записи. Для OE6 это будут
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000001]
....
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\000000XX]
На каждую учетную запись один ключ (KEY). На этом ключе есть стринговые значения
POP3 Server
SMTP Server
Вот именно их тебе и надо проверять и при необходимости переписывать новые значения.

Да это и так понятно.

Цитата:
Если раньше с реестром скриптами не работал, будет проще не проверять все имеющиеся KEY в [HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\], а проверить наличие
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000001]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000002]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\00000003]
(столько, сколько у пользователей может быть максимально учетных записей)

А вот в этом вся и загвоздка. Для меня по крайней мере. у одного 00000001, у другого 00000002 - как это проверить? И со скриптами дейстительно не занимался - все больше спортивным администрированием занимался
Автор: AlexSSS
Дата сообщения: 16.03.2005 21:42
Garreth

> Для меня по крайней мере. у одного 00000001,
>у другого 00000002 - как это проверить?
просто проверяешь первый десяток на значения POP3 Server и SMTP Server.
Это IMHO более простой способ. Чуть сложнее, зато более идеалогически правильным будет Enemerating всех KEY и проверка на всех значения POP3 Server и SMTP Server.

у тебя сейчас какие-то логонные скрипты есть?

Я пишу в основном на KIX Script, если сам сможешь разобраться, как именно их ставить логон скриптами, могу помочь с самим скриптом.

Если логон скриптов сейчас никаких нет и раньше с ними не работал, есть другой вариант - просто выложить скрипт где-то в сети и просто оповестить пользователей, что если у них не работает почта, они должны запустить такой-то файл на таком-то диске в такой-то папке.

Могу прикинуть и как это можно сделать на VB Script или WSH, но по читабельности он наверняка будет заметно хуже и сложнее.

Добавлено:
Garreth
кстати, нашел тот старый скрипт на KIX Script

' новый адрес сервера
$MailServer= "NEW.NEW.NEW.NEW"

' Проверка учетных записей для Outlook 2000
$Index = 0
$Accounts= "HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\OMI Account Manager\Accounts"
$KeyName = ENUMKEY($Accounts, $Index)
$Res= ver_account()

' Проверка учетных записей для OE6
$Index = 0
$Accounts= "HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts"
$KeyName = ENUMKEY($Accounts, $Index)
$Res= ver_account()

function ver_account()
WHILE $KeyName<>""
$Server= ReadValue($Accounts+'\'+$KeyName, "Pop3 Server")
IF $Server = "OLD.OLD.OLD.OLD"
$Res = WriteValue($Accounts+'\'+$KeyName, "Pop3 Server", $MailServer, REG_SZ)
ENDIF
$Server= ReadValue($Accounts+'\'+$KeyName, "SMTP Server")
IF $Server = "OLD.OLD.OLD.OLD"
$Res = WriteValue($Accounts+'\'+$KeyName, "SMTP Server", $MailServer, REG_SZ)
ENDIF
$Index = $Index + 1
$KeyName = ENUMKEY($Accounts, $Index)
LOOP
EndFunction
Автор: Garreth
Дата сообщения: 16.03.2005 21:50
AlexSSS

Цитата:
у тебя сейчас какие-то логонные скрипты есть?

да вот как-то без надобности... ( Нет, сейчас нет.

Цитата:
Если логон скриптов сейчас никаких нет и раньше с ними не работал, есть другой вариант - просто выложить скрипт где-то в сети и просто оповестить пользователей, что если у них не работает почта, они должны запустить такой-то файл на таком-то диске в такой-то папке.

Плохой вариант. Это уже телефонное администрирование - зайдите туда, найдите то, нажмите сё.... уровень пользователей еще оч низок.

Если нетрудно по времени и затратам, то помоги, пожалуйста.
Автор: AlexSSS
Дата сообщения: 16.03.2005 22:00
Garreth
взгляни в мое верхнее сообщение, я там успел добавить сам скрипт, пока ты писал ответ ;o)
правда форум нагло сьел все отступы, которые делали текст читабельным, но разобраться все равно можно. Либо давай мне свой мейл, пришлю на него файл скрипта.
Автор: leputain
Дата сообщения: 17.03.2005 03:10
Собиралка логов: (запускать из-под админа)
[more=код]
Код: WScript.Echo("EVENTLOG DUMP");

var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;

var arrComputers = new Array("HOME","ADMIN1");
var strBackup = "c:\\"

for (i = 0; i < arrComputers.length; i++)
{
var objWMIService = GetObject("winmgmts:{(Backup,Security)}\\\\" + arrComputers[i] + "\\root\\CIMV2");

WScript.Echo(arrComputers[i] + ": CONNECT");

var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTEventlogFile", "WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);

WScript.Echo(arrComputers[i] + ": WMI QUERY");

var enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext())
{
var objItem = enumItems.item();

var strBackupFile = strBackup + arrComputers[i] + "_" + TimeNow() + "_" + objItem.LogfileName + ".evt";

try { objItem.BackupEventLog(strBackupFile) }
catch(e) { WScript.Echo(strBackupFile + " couldn't be saved."); }

WScript.Echo(arrComputers[i] + ": " + objItem.LogfileName + " DUMPED");

try { objItem.ClearEventLog() }
catch(e) { WScript.Echo(objItem.LogfileName + " couldn't be cleared."); }

WScript.Echo(arrComputers[i] + ": " + objItem.LogfileName + " CLEARED");

}

var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.MoveFile("\\\\" + arrComputers[i] + "\\c$\\*.evt", "\\\\HOME\\eventlog\\");

WScript.Echo(arrComputers[i] + ": DUMPS COLLECTED");

WScript.Echo(arrComputers[i] + ": DISCONNECT");

}

function TimeNow()
{
d = new Date();
var strNow = "";
strNow += LeadingZero(d.getFullYear()) + "_";
strNow += LeadingZero((d.getMonth()) + 1) + "_";
strNow += LeadingZero(d.getDate()) + "_";
strNow += LeadingZero(d.getHours()) + "_";
strNow += LeadingZero(d.getMinutes()) + "_";
strNow += LeadingZero(d.getSeconds());
return(strNow);
}

function LeadingZero(intNum)
{
if (10 > intNum)
{ intNum = "0" + intNum;}
return(intNum);
}
Автор: LittleJohnny
Дата сообщения: 17.03.2005 08:42
Можно ли установить VPN-соединение через скрипт?
Автор: kibkalo
Дата сообщения: 17.03.2005 12:30
LittleJohnny - поиграйся с запуском файла C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk - сначала не из скрипта, чтобы понять какое соединение выбирать, затем в скрипте уже
Автор: skylined
Дата сообщения: 17.03.2005 18:23
LittleJohnny
самый простой способ ИМХО

rasdial <имя соединения> <имя юзера> <пароль>

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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