On error Resume Next
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'******************************************
strComputer = "193.125.10.5"
strUser = "Andy_user"
strPassword = "PASSWORD"
strDomain = ""
'******************************************
Err.Clear
'--- Подключаемся ---
Set objSWbemLocator = CreateObject ("WbemScripting.SWbemLocator")
If (Err.Number <> 0) Then
WScript.Echo "Error (objSWbemLocator) : " & Err.Number &
" " & Err.Description
WScript.Quit
End If
Err.Clear
Set objSWbemServices = objSWbemLocator.ConnectServer ( _
strComputer, _
"root\cimv2", _
strUser, _
strPassword, _
"MS_409", _
"ntlmdomain:" & strDomain)
If (Err.Number <> 0) Then
WScript.Echo "Error (objSWbemServices) : " & Err.Number &
" " & Err.Description
WScript.Quit
End If
Err.Clear
Set file_object = CreateObject("Scripting.FileSystemObject")
Set list = file_object.OpenTextFile("./Rezult.log",ForWriting,True)
Set colAcc = objSWbemServices.ExecQuery ("Select * from Win32_UserAccount")
WScript.Echo "Обнаружено " & colAcc.Count & " учетных записей."
For Each ttt in colAcc
list.Write ttt.Caption & " " & vbCrLf
list.Write " " & "Caption : " & ttt.Caption
& vbCrLf
list.Write " " & "Name : " & ttt.Name
& vbCrLf
list.Write " " & "Description : " & ttt.Description
& vbCrLf
list.Write " " & "Domain : " & ttt.Domain
& vbCrLf
list.Write " " & "SID : " & ttt.SID
& vbCrLf
list.Write " " & "SIDType : " & ttt.SIDType
& vbCrLf
list.Write " " & "Disabled : " & ttt.Disabled
& vbCrLf
list.Write " " & "Lockout : " & ttt.Lockout
& vbCrLf
list.Write " " & "PasswordChangeable : " &
ttt.PasswordChangeable & vbCrLf
list.Write " " & "PasswordExpires : " &
ttt.PasswordExpires & vbCrLf
list.Write " " & "PasswordRequired : " &
ttt.PasswordRequired & vbCrLf
list.Write " ------------------------------- " &
vbCrLf
Next
list.Close
/////////////////////////////////////////////////////////////////
////// (В свойствах ярлыка, содержащих ссылку на запускаемый объект,
////// меняем старое имя исполняемого файла на новое)
////// 05/10/2005 ShS
///////////////////////////////////////////////////////////////////////////////
//Папка, в которой должны лежать интересующие нас ярлыки
var strFldrName="\\\\DC\\NETLOGON\\!\\Test Gepard"
//Подстрока, которую надо заменить
var strOld="Gepard.bat";
//Подстрока, на которую надо заменить
var strNew="GepardTest.bat";
////////////////////////////////////////////////////////////////////////////////
//Объект для доступа к свойствам ярлыка
var oShellLink;
var iStartOfFileName;
var strPath;
//создаем объект FSO для доступа к папкам и файлам
var FSO=WScript.CreateObject("Scripting.FileSystemObject");
//Создаем объект Folder для strFldrName
var fsoFldr=FSO.GetFolder(strFldrName);
//Получим колекцию файлов в папке strFldrName
var colFiles= new Enumerator (fsoFldr.Files);
//
var WshShell = WScript.CreateObject("WScript.Shell");
//Цикл по всем файлам в папке
for (;!colFiles.atEnd();colFiles.moveNext())
{
//Есть ли у файла расширение "lnk"? (Т.е. ярлык ли это?)
if (colFiles.item().Name.length-colFiles.item().Name.lastIndexOf(".lnk")-4==0)
{
oShellLink = WshShell.CreateShortcut(strFldrName
+ "\\"+colFiles.item().Name);
//Проверяем, что текущий ярлык содержит в пути
запуска искомое имя файла strOld
if (oShellLink.TargetPath.lastIndexOf(strOld)!=-1)
{
//вычисляем позицию, с которой
начинается интересуемое нас имя файла
iStartOfFileName=oShellLink.TargetPath.length
- strOld.length;
strPath= oShellLink.TargetPath.substr(0,iStartOfFileName-1);
//заменяем старое имя файла
на новое
oShellLink.TargetPath = strPath+"\\"+strNew;
oShellLink.Save();
}
}
}
/** 2004 ShS
* Script: violater.js
* Если назначить этот скрипт на вход/выход пользователя из системы,
то получим перечень компьютеров и
* пользователей, на которых
эти пользователи обладают повышеными правами (т.е. являются членами
* вышеназванных групп)
**/
// define constants
// Note: if a file exists, using forWriting will set
// the contents of the file to zero before writing to
// it.
var forReading = 1, forWriting = 2, forAppending = 8,
objDate, Today, strDate, strMonth, LogFileName;
objDate = new Date ();
Today = "_" + objDate.getYear();
strMonth = "" + (objDate.getMonth()+1);
strDate = "" + objDate.getDate();
Today += (strMonth.length<2) ? "0" + strMonth : strMonth;
Today += (strDate.length<2) ? "0" + strDate : strDate;
// Create FileSystemObject
fs = new ActiveXObject( "Scripting.FileSystemObject" );
//[b]Лог-файл, куда скрипт будет записывать результаты[/b]
var LogFileName = "\\\\admiral\\WhoIsViolater$\\" + "Violaters"+ Today + ".txt";
//city0 - имя домена WinNT
showusers( "city0/." );
/**
*
* example - showusers( "DOMAINNAME" );
* - showusers( "DOMAINNAME/Computer"
);
**/
function showusers( domain )
{
var WshNet,UserName;
WshNet=WScript.CreateObject("WScript.Network");
UserName=WshNet.UserName;
try
{
var DomainMembers = GetObject( "WinNT://" + domain );
var e = new Enumerator( DomainMembers );
for( ; !e.atEnd(); e.moveNext() )
{
var Group = e.item();
if( Group.Class == "Group" )
{
if (Group.Name=="Administrators"
||
Group.Name=="Администраторы"
||
Group.Name=="Power
Users" ||
Group.Name=="Опытные
пользователи")
{
var ee= new
Enumerator(Group.Members());
for( ; !ee.atEnd();
ee.moveNext() )
{
var Member = ee.item();
if ((Member.Class=="User") && (Member.Name==UserName))
{
print( "Computer : " + WshNet.ComputerName);
print( "Group : " + Group.Name
);
print( "Member : " + Member.Name
);
print( "============================" );
}
}
}
}
}
}
catch( e )
{
print( "Error: " + e.description );
}
}
function print( msg )
{
try
{
os = fs.GetFile( LogFileName );
}
catch (e)
{
if (e!=0)
{
fs.CreateTextFile(
LogFileName ); // Create the text file
os = fs.GetFile(
LogFileName );
}
}
os = os.OpenAsTextStream( forAppending, 0 ); // Open the file for appending
// Write two lines of text to the file
os.write( msg+"\r\n" );
// Close the file
os.Close();
//WScript.Echo( msg );
}
//*****************************************************
//JScript 2005 ShS addPrn.js
//Пример запуска: %LOGONSERVER%\NETLOGON\addPrn.js \\PrintServer\HPLJ2200DN(23)
//*****************************************************
var WshNetwork,
objArgs,
strErrMsg,
strPrinterPath;
//Путь к подключаемому принтеру берем из параметров запуска
objArgs=WScript.Arguments.Unnamed;
strPrinterPath=objArgs.Item(0);
//
WshNetwork=WScript.CreateObject("Wscript.Network");
try
{
WshNetwork.AddWindowsPrinterConnection(strPrinterPath);
WshNetwork.SetDefaultPrinter(strPrinterPath);
}
catch (objError)
{
if (objError !=0)
{
strErrMsg = "Произошла ошибка при пордключении сетевого
принтера - "+strPrinterPath+"\n"+
"Скорее всего узанный
сетевой путь не существует"+"\n\n"+
"Обратитесь к системному
администратору по тел. 1333"
//"Код ошибки:
"+ objError.number;
WScript.Echo(strErrMsg);
}
}
Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate,(RemoteShutdown)}//FNQ-имя-серверера-для-убийства").ExecQuery("select
* from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Shutdown()
Next
//*************************************************************************
// JScript ShS 2004
//
//*************************************************************************
var objConn, //объект Connection
objComm, //объект Command
objRS, //объект RecordSet
strRecord, //Результирующая строка, содержащая сведения о пользователе
arrAttribs, //Перечень атрибутов, значения которых мы будем извлекать для каждого
пользователя
i, //Счетчик цикла
strDevOut, //Устройство вывода
RootDSE,
DefaultDomain, //Домен для текущего пользователя
strSpliter; //Раделитель полей для результирующей строки
var ADS_UF_ACCOUNTDISABLE=2; //"Флаг" битового атрибута userAccountControl
//
strDevOut="Display"
//
//Получим имя домена для пользователя, от имени которого запущен данный скрипт
RootDSE=GetObject("LDAP://RootDSE");
DefaultDomain=GetObject("LDAP://"+RootDSE.Get("DefaultNamingContext"));
WScript.Echo(DefaultDomain.distinguishedName);
//
strSpliter="*";
//Информацию о атрибутах можно получить здесь:
//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/user_object_attributes.asp
//Массив атрибутов должен содержать по крайней мере один элемент
arrAttribs = new Array ("displayName","sAMAccountName","profilePath","mail","userAccountControl","proxyAddresses");
//
//Инициализируем переменные, необходимые для работы с AD, как с БД
objConn = WScript.CreateObject("ADODB.Connection");
objComm = WScript.CreateObject("ADODB.Command");
objRS = WScript.CreateObject("ADODB.Recordset");
objConn.Provider = "ADsDSOObject";
objConn.Open("Active Directory Provider");
objComm.ActiveConnection = objConn;
//
//Формируем текст SQL-запроса к AD
objComm.CommandText = "SELECT ";
for ( i=0 ; i<arrAttribs.length-1; i++)
{
objComm.CommandText+=arrAttribs[i]+",";
}
//За последним полем в запросе не должна следовать запятая,
//поэтому добавляем имя последнего поля вне цикла
objComm.CommandText+=arrAttribs[i];
//Поиск проводим внутри OU "mg"
objComm.CommandText+= " FROM \'LDAP://ou=mg,"+DefaultDomain.distinguishedName+"\'"+
"WHERE objectClass = \'user\' and objectCategory = \'person\'";
//Фильтр для отбора тех, у кого есть внешний Email
//Заглушка
//objComm.CommandText+=" and (mail LIKE \'%mn.local\')";
//
//выполняем запрос
objRS = objComm.execute();
//Формируем строку-заголовок с названиями полей
strRecord="";
for ( i=0 ; i<arrAttribs.length; i++)
{
strRecord+=arrAttribs[i]+strSpliter;
}
//Вывод результирующей строки на устройство вывода
fnOut(strRecord,strDevOut);
//Формируем строки данных
objRS.MoveFirst();
while (!objRS.EOF)
{
strRecord="";
for ( i=0 ; i<arrAttribs.length; i++)
{
switch (arrAttribs[i])
{
case "userAccountControl":
//Выделяем бит ADS_UF_ACCOUNTDISABLE
if (objRS.Fields(arrAttribs[i]).Value&2) strRecord+="UserDisabled"+strSpliter;
else strRecord+="UserEnabled"+strSpliter;
break;
case "proxyAddresses":
vbarrEmailAddreses = objRS.Fields(arrAttribs[i]).Value;
if (vbarrEmailAddreses!=null)
{
arrEmailAddreses=vbarrEmailAddreses.toArray();
for (iEmailCounter=0;iEmailCounter<arrEmailAddreses.length-1;iEmailCounter++)
{
strRecord+=arrEmailAddreses[iEmailCounter]+"|";
}
strRecord+=arrEmailAddreses[iEmailCounter];
}
strRecord+=strSpliter;
break;
default:
strRecord+=objRS.Fields(arrAttribs[i]).Value+strSpliter;
}
}
fnOut(strRecord);
objRS.MoveNext();
}
objRS.close;
///////////////////////////////////////////////////////////////////////////////////////////
//Функция вывода результирующей строки
///////////////////////////////////////////////////////////////////////////////////////////
function fnOut(strOutRecord,strDev)
{
//Заглушка
WScript.Echo(strOutRecord);
}
/*Для справки
Константы для битового поля userAccountControl
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/example_code_for_creating_a_user.asp
Const ADS_UF_SCRIPT = &H1
Const ADS_UF_ACCOUNTDISABLE = &H2
Const ADS_UF_HOMEDIR_REQUIRED = &H8
Const ADS_UF_LOCKOUT = &H10
Const ADS_UF_PASSWD_NOTREQD = &H20
Const ADS_UF_PASSWD_CANT_CHANGE = &H40
Const ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = &H80
Const ADS_UF_TEMP_DUPLICATE_ACCOUNT = &H100
Const ADS_UF_NORMAL_ACCOUNT = &H200
Const ADS_UF_INTERDOMAIN_TRUST_ACCOUNT = &H800
Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &H1000
Const ADS_UF_SERVER_TRUST_ACCOUNT = &H2000
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000
Const ADS_UF_MNS_LOGON_ACCOUNT = &H20000
Const ADS_UF_SMARTCARD_REQUIRED = &H40000
Const ADS_UF_TRUSTED_FOR_DELEGATION = &H80000
Const ADS_UF_NOT_DELEGATED = &H100000
Const ADS_UF_USE_DES_KEY_ONLY = &H200000
Const ADS_UF_DONT_REQUIRE_PREAUTH = &H400000
Const ADS_UF_PASSWORD_EXPIRED = &H800000
Const ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = &H1000000
*/
if not (%1) == () goto dnsset
netsh int sh int >int.tmp
for /F "skip=3 tokens=1,2,3,*" %%i in ( int.tmp ) do call :dnsset %%i %%j %%k %%l
del /q int.tmp
goto cmdend
:dnsset
if /I (%1) == (enabled) goto cmdcont
if /I (%1) == (разрешён) goto cmdcont
goto cmdend
:cmdcont
if /I (%3) == (internal) goto cmdend
if /I (%3) == (loopback) goto cmdend
if /I (%3) == (внутренний) goto cmdend
netsh int ip set dns "%4" source=static addr=192.168.0.1
netsh int ip add dns "%4" addr=192.168.0.2
netsh int ip set wins "%4" source=static addr=192.168.0.1
netsh int ip add wins "%4" addr=192.168.0.2
:cmdend
/*****************************************************/
/*JSCript 2005 Shs
*/
/****************************************************/
var FSO,WshShell,MyDate,SourcePath,DestinationPath,SourceFolder,SourceFiles,DateCreated;
arrayDC = new Array();
//создаем необходимые для работы скрипта объекты
FSO=WScript.CreateObject("Scripting.FileSystemObject");
WshShell=WScript.CreateObject("WScript.Shell");
//Заданая дата
MyDate = new Date (2003,10,10); //месяцы от 0 до 11 !!!!!
//Путь к каталогам
SourcePath="D:\\!!!!!!";
DestinationPath="D:\\!\\";
//Получаем объект-папка
SourceFolder=FSO.GetFolder(SourcePath);
//Получим колекцию файлов в заданом каталоге
SourceFiles = new Enumerator(SourceFolder.Files);
//Ну, а теперь в цикле перебираем и копируем
for (;!SourceFiles.atEnd(); SourceFiles.moveNext())
{
DateCreated = new Date(SourceFiles.item().DateCreated);
if (DateCreated<=MyDate)
{
//WScript.Echo(DateCreated.toLocaleDateString() +"
"+ MyDate.toLocaleDateString());
SourceFiles.item().Copy(DestinationPath);
}
}
'On Error Resume Next
Const ForReading = 1
Find_MAC = "00-80-ad-06-c2-f9"
Set oShell = WScript.CreateObject ("WScript.Shell")
For i = 1 To 254 Step 1
Return = oShell.Run ("ping -n 1 -w 10 193.125.1."
& i , 0, false)
Next
WScript.Sleep(8000)
Return = oShell.Run ("cmd /C arp -a > .\Rezult.txt" , 0, True)
Set Fso = CreateObject("Scripting.FileSystemObject")
Set My_File = Fso.OpenTextFile( ".\Rezult.txt", ForReading, True)
Do While My_File.AtEndOfStream <> True
ReadLineTextFile = My_File.ReadLine
If InStr(ReadLineTextFile,Find_MAC) <> 0 Then
WScript.Echo ReadLineTextFile
End If
Loop
My_File.Close
WScript.Quit(0)
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select Name, Location from 'LDAP://DC=yourdomain,DC=ru' " _
& "where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strComputer = objRecordSet.Fields("Name").Value
Set objUser = GetObject("WinNT://" & strComputer & "/Administrator,
user")
objUser.SetPassword "testpassword"
objUser.SetInfo
objRecordSet.MoveNext
Loop
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & _
"TargetInstance
ISA 'CIM_DataFile'" & _
" AND TargetInstance.Drive
= 'c:'" & _
" AND TargetInstance.Extension
= 'txt'" & _
" AND TargetInstance.Path
= '\\temp\\'")
Wscript.Echo "Waiting for events ..."
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
WScript.Echo "Filename: " & objReceivedEvent.TargetInstance.FileName
WScript.Echo "Name: " & objReceivedEvent.TargetInstance.Name
Loop
///////////////////////////////////////////////////////////////////////////
// JScript
//на котором не установлен SMTP-протокол
///////////////////////////////////////////////////////////////////////////
objEmail = WScript.CreateObject("CDO.Message");
objEmail.From = "BillGates@microsoft.com";
objEmail.To = "1@1.com";
objEmail.Subject = "Subj";
objEmail.Textbody = "Text";
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")
= 2;
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")
= "smtp.server.ru"
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25;
objEmail.Configuration.Fields.Update();
objEmail.Send();
/**************************************************************************
Имя: backup.js
Комментарий: Скрипт резервного копирования, использующий ntbackup.exe
Язык: JScript
Автор: Андрей Мишечкин
Version: 2.0
26.07.2006
**************************************************************************/
var MsgText;
var bcfg;
var BackupObject;
var BackupPath;
var JobResult;
//WshShell - используется для выполнения системных комманд
var WshShell = WScript.CreateObject("WScript.Shell");
//Создание объекта для сетевых операций
var WshNetwork = WScript.CreateObject("WScript.Network");
//Объект для файловой системы
var fso = WScript.CreateObject("Scripting.FileSystemObject");
/////////////////////////////////////////////////////////
// Определение имени компьютера //
/////////////////////////////////////////////////////////
var WMIServiceObj = GetObject("Winmgmts:");
var OSPropEnumerator = new Enumerator(WMIServiceObj.ExecQuery("Select Name from
Win32_ComputerSystem"));
var ComputerName = OSPropEnumerator.item().Name;
/////////////////////////////////////////////////////////
// Определение текущей даты //
/////////////////////////////////////////////////////////
var objCurrentDate = new Date;
var CurrentDate = objCurrentDate.getDate();
CurrentDate += "_";
var CurrentMonth = (objCurrentDate.getMonth()+1);
if(CurrentMonth<10)
CurrentDate +="0";
CurrentDate += CurrentMonth;
CurrentDate += "_";
CurrentDate += objCurrentDate.getYear();
/////////////////////////////////////////////////////////
// Считывание конфигурационного файла //
// и создание файла журнала //
/////////////////////////////////////////////////////////
if(!fso.FolderExists("Logs"))
{
fso.CreateFolder("Logs");
}
try
{
bcfg = fso.OpenTextFile("backup.cfg",1);
logfile = fso.CreateTextFile("Logs\\" + CurrentDate + ".log",true); //Создание лог-файла
}
catch(e)
{
MsgText = "Backup failed on. Unable to open configuration or log file.\n" + e.description+"\n";;
SendMail("error",MsgText);
WScript.Quit();
}
while(!bcfg.AtEndOfStream)
{
var cfgLine = new String(bcfg.ReadLine());
var cfgParams = cfgLine.split(",",2);
BackupObject = cfgParams[0];
BackupPath = cfgParams[1];
//Подключение сетевого диска с резервными копиями
try
{
WshNetwork.MapNetworkDrive("S:",BackupPath);
}
catch(e)
{
MsgText = "Unable to map backup path for " + BackupObject + " backup. \n" + e.description
+ "\n";
SendMail("error",MsgText);
WScript.Quit();
}
//Выполнить резервное копирование системного состояния (применяется для резервного
копирования активного каталога)
if(BackupObject == "SystemState")
{
logfile.WriteLine("System state backup starting");
JobResult = NTBackupJob("SystemState");
if(JobResult == 0)
logfile.WriteLine("System state backup successfuly finished");
else if(JobResult == 2)
logfile.WriteLine("NTBackup return non-zero result. Check the NTBackup log for details");
}
//Выполнить копирование каталогов и\или файлов
else
{
logfile.WriteLine(BackupObject+" backup starting");
JobResult = NTBackupJob(BackupObject);
if(JobResult == 0)
logfile.WriteLine(BackupObject + " backup successfuly finished");
else if(JobResult == 1)
{
MsgText = "Unable to backup " + BackupObject + ". Incorrect folder or file name
in backup.cfg.\n";
logfile.WriteLine(MsgText);
SendMail("error",MsgText);
}
else if(JobResult == 2)
logfile.WriteLine("NTBackup return non-zero result. Check the NTBackup log for details");
}
WshNetwork.RemoveNetworkDrive("S:",true);
logfile.WriteBlankLines(1);
}
bcfg.Close();
logfile.Close();
/*******************************************************************************/
/* Функция резервного копирования с помощью утилиты ntbackup */
/*******************************************************************************/
function NTBackupJob(BackupSpec)
{
var objBackup;
var BackupName;
var BackupMode;
var BackupCommandString;
var FileCounter = 0;
var TodayFileNumber = 0;
var AlreadyBackup = false;
//////////////////////////////////////////////////////////////////
// Получения объекта файла или папки для резервного копирования //
//////////////////////////////////////////////////////////////////
if(BackupSpec == "SystemState")
{
BackupName = ComputerName + "_SystemState"
BackupMode = "normal";
}
else
{
if(fso.FolderExists(BackupSpec))
objBackup = fso.GetFolder(BackupSpec);
else if(fso.FileExists(BackupSpec))
objBackup = fso.GetFile(BackupSpec);
else
return(1);
//////////////////////////////////////////////////////////////////////////////////////////////
// Анализ файлов резервных копий и формирование имени файла и режима резервного
копирования //
//////////////////////////////////////////////////////////////////////////////////////////////
BackupName = objBackup.Name;
if(fso.FolderExists("S:\\"+ComputerName))
{
var objFolder = fso.GetFolder("S:\\"+ComputerName);
var enumFiles = new Enumerator(objFolder.Files);
while(!enumFiles.atEnd())
{
var strFileName = new String(enumFiles.item().Name);
if(BackupName == strFileName.substring(11,strFileName.length - 6))
{
BackupMode = "incremental";
if((CurrentDate + "_" + BackupName) == strFileName.substring(0,strFileName.length
- 6))
{
AlreadyBackup = true;
TodayFileNumber = strFileName.substring(strFileName.length - 4,strFileName.length
- 5);
TodayFileNumber++;
}
else
{
FileCounter++;
break;
}
}
else
{
if(!AlreadyBackup)
BackupMode = "normal";
}
FileCounter++;
enumFiles.moveNext();
}
if(FileCounter == 0)
BackupMode = "normal";
}
else
{
fso.CreateFolder("S:\\"+ComputerName);
BackupMode = "normal";
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
// Выполнение резервного копирования с помощью утилиты ntbackup //
//////////////////////////////////////////////////////////////////////////////////////////////
if(BackupSpec != "SystemState")
{
BackupName = CurrentDate + "_" + BackupName + "_" +TodayFileNumber + ".bkf";
BackupCommandString = "ntbackup backup " + BackupSpec + " /J " + "\"" + BackupName
+ "\" /M " + BackupMode + " /f \""+"S:\\"+ComputerName+"\\"+BackupName+"\" /L:F";
}
else
{
BackupName = CurrentDate + "_" + BackupName + ".bkf";
BackupCommandString = "ntbackup backup systemstate" + " /J " + "\"" + BackupName
+ "\" /M Normal " + " /f \""+"S:\\"+ComputerName+"\\"+BackupName+"\" /L:F";
}
var BackupResult = WshShell.Run(BackupCommandString,2,true);
if(BackupResult != 0)
{
SendMail("warning","Warning! NTBackup return non-zero result on " + BackupName +
" backup process. Check the backup log.");
return(2);
}
else
return(0);
}
/*******************************************************************************/
/* Функция отправки сообщения по электронной почте */
/*******************************************************************************/
function SendMail(MsgFlag,MsgText)
{
var objEmail = WScript.CreateObject("CDO.Message");
objEmail.From = "\"Backup script\" scriptrobot@company.ru";
objEmail.To = "admin@company.ru";
if(MsgFlag == "error")
objEmail.Subject = ComputerName+" backup error";
if(MsgFlag == "warning")
objEmail.Subject = ComputerName+" backup warning";
objEmail.Textbody = MsgText;
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")
= 2;
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")
= "mail.company.ru";
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25;
objEmail.Configuration.Fields.Update();
objEmail.Send();
}
-----------------------------------
Параметры бэкапа задаются в текстовом файле backup.cfg в следующем формате:
C:\Directory1,\\Server1\BackupShare1
D:\Directory2,\\Server2\BackupShare2
****************************************************************************
'ChangePassword.vbs
'Необходимо ввести старый и новый пароли.
'*************************начало*******************************************
' Определяем область поиска отделов и пользователей
' Можно вручную установить начало поиска
'Примеры: "ou=users,ou=autopark,DC=ap15,DC=dom" - вложенное подразделение
'"cn=users, DC=ap15,DC=dom" - папка users
'"DC=ap15,DC=dom" - весь домен
ContainerPuth = "ou=users,ou=autopark,DC=ap15,DC=dom"
Set Container = GetObject("LDAP://" & ContainerPuth)
i=0
'Выбераем отдел
For Each organizationalUnit In Container
i=i+1
OName = organizationalUnit.Name
Str = Str & VbCrLf & i & " " & organizationalUnit.Name
If MsgBox (str,vbYesNo,"Выбираем отдел")=vbYes Then
' запоминаем имя отдела
OnameYes = Oname & "," & ContainerPuth
Exit For
End If
Next
' ищем пользователя
Set Object = GetObject("LDAP://" & OnameYes)
Object.Filter = Array ("User")
i=0
For Each User In Object
i=i+1
StrTxt = StrTxt & VbCrLf & i & " " & User.samAccountName
& " " & User.name
Next
MsgBox strtxt
StrTxt = ""
UN=InputBox ("Введите accaunt пользователя","Изменение уч. зап.","х")
'Ищем учетную запись и выводим дополнительные сведения о ней
For Each User In Object
StrTxt = StrTxt & VbCrLf & User.samAccountName & " " &
User.name
If User.samAccountName = UN Then
'Если не было ни одного входа в сеть LastLogin = 01.01.1930 00:00:00
Messg = User.LastLogin
If Err.Description <> "" Then Messg = "01.01.1930
00:00:00"
Err.Clear
'Если согласны, - удаляем учетную запись
If MsgBox ("Изменяем: " & User.samAccountName
& " " & User.name & " " & Messg ,vbYesNo,"ПРЕДУПРЕЖДЕНИЕ!")=vbYes
Then
'MsgBox User.UserPrincipalName
OldPassword = InputBox ("Введите
старый пароль...","Изменение пароля","123456")
NewPassword = InputBox ("Введите
новый пароль...","Изменение пароля","123456")
' !!!!со следующей строки снимите
комментарий после отладки скрипта!!!!!
'User. OldPassword, NewPassword
MsgBox "Пароль " & User.name
& " изменен!"
End If
End If
Next
StrTxt = ""
'*************************конец******************************************
:begin
@echo off
ping -n 3 Любой внешний ИП
if not errorlevel 1 goto :begin
netsh interface ip set address name="Local Area Connection" static ИП АДДРЕС МАСКА
РУТЕР
netsh interface ip set dns name="Local Area Connection" static АДДРЕС ДНС СЕРВЕРА
primary
:bad
ping -n 3 Любой внешний ИП
if not errorlevel 1 goto :bad
netsh interface ip set address name="Local Area Connection" static ИП АДДРЕС МАСКА
РУТЕР
netsh interface ip set dns name="Local Area Connection" static АДДРЕС ДНС СЕРВЕРА
primary
goto :begin
'=============================================
'Скрипт отсылает сообщение по електронной почте когда свободное
'пространство на диске меньше заданного
'=============================================
Quta = 1500 'количество свободных мегабайт
strSMTP_Server = "SMTP.domain.ru" 'ваш
SMTP сервер
strTo = "admin@domain.ru"
'кому
strFrom = "megaserver@domain.ru" 'от
кого
strSubject = "Low disk space"
'тема сообщения
strBody = "Disk space on drive D is less than 1500 Mb" 'текст сообщения
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Drive = fso.GetDrive("d")
free = FormatNumber(fso.GetDrive(drive).FreeSpace/1048576, 1)
If free < Quota Then
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")
= 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")
= strSMTP_Server
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout")
= 10
Flds.Update
iMsg.Configuration = iConf
iMsg.To = strTo
iMsg.From = strFrom
iMsg.Subject = strSubject
iMsg.TextBody = strBody
iMsg.Send
End If
'************************************************
'Язык: VBScript
'Автор: mr.Soshe (Салий В.В.)
'Версия: 1.0
'************************************************
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title",
"=::= -"
aComputer = array("sys-admin","st-buh","zarplata","ekonom","zam-nach", "laborant","dig-zal","materials","secretar")
Set oExplorer = WScript.CreateObject("InternetExplorer.Application")
oExplorer.Navigate "about:blank"
oExplorer.ToolBar = 0
oExplorer.StatusBar = 1
oExplorer.Width=400
oExplorer.Height = 300
oExplorer.Left = 300
oExplorer.Top = 180
Do While (oExplorer.Busy)
Wscript.Sleep 180
Loop
oExplorer.Visible = 1
sHTML = "<title>Список машин с процессом "Opera"</title><center><b>Подождите
пожалуйста. Идёт обработка запроса." & " <br> " & _
"Это может занять некоторое время.</center></b><br><br>"
oExplorer.Document.write sHTML
n = 11
for i=0 to n
On Error Resume Next
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\"
& aComputer(i) & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery ("SELECT * FROM Win32_Process
WHERE Name = 'Opera.exe'")
oExplorer.StatusText = int(100/n*i-100/n/2) & " %"
If colProcesses.Count <> 0 Then
oExplorer.Document.write "<center>" &
aComputer(i) & "</center>"
end if
oExplorer.StatusText = int(100/n*i) & " %"
next
oExplorer.Document.write "<br><br><center><b>Запрос окончен.</b></center>"
'Wscript.Sleep 10000
'oExplorer.Quit
WshShell.RegDelete "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title"
Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "q:", "\\192.168.1.100\e$", , "administrator", "password"
Const DeleteReadOnly = TRUE
Set WshShell = WScript.CreateObject ("Wscript.Shell")
Set WshSysEnv = WshShell.Environment ("Process")
Set objFSO = CreateObject("Scripting.FileSystemObject")
agentFile = WshSysEnv ("userprofile") + "\Application Data\Mail.Ru\Agent\magent.exe"
If objFSO.FileExists(agentFile) Then
objFSO.DeleteFile(agentFile), DeleteReadOnly
if err.number = 0 then
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "killer@kontora.ru"
objEmail.To = "admin@kontora.ru"
objEmail.Subject = "Mail.ru-агент"
objEmail.Textbody = "Уважаемые господа системные администраторы, уведомляю Вас о
том что уничтожен вражеский mail.ru агент из " + WshSysEnv ("userprofile")
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"ip почтового сервера"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
end if
end if
Dim FSO, WSH
Dim TheFolder, AFile, RAR_Dist, RAR_Param
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder(WSH.ExpandEnvironmentStrings("%ProgramFiles%") + "\WinRAR\")
AFile = FSO.GetAbsoluteathName(TheFolder + "\winrar.exe")
If Not FSO.FileExists(AFile) Then
RAR_Dist = "\\server\distrib\winrar\setup.exe"
RAR_Param = "/s"
WSH.run RAR_Dist & RAR_Param, 6, True
End If
set WSH = nothing
' Написан для помощи пользователям в диагностике
' возможных проблем на время отпуска
'
' Содержит 3 функции
' Ping(<ip-addr or domain>) - для проверки включенности
сервера
' Nslookup(<domain>) - для проверки работы DNS сервера
' IsAPIPA() - для поиска строки "169.254." в ipconfig /all
'
' и пример их использования.
'
' Скрипт будучи закинутым пользователям в папку Windows\ позволяет
' оперативно по телефону определить причину неисправности.
'
' ----------------------------------------------------------------------
status = vbInformation
StrKar = CHR (13) + CHR (10) ' Перенос каретки
myStr = "Диагностика сети v1.0:" + StrKar
'------------------------
' Пример Ping()
'------------------------
myStr = myStr + StrKar + "Серверы:" + StrKar
If ping("192.168.0.1") then
myStr = myStr + "Сервер КД - [OK]" + StrKar
Else
myStr = myStr + "Сервер КД - [недоступен!!!]" + StrKar
status = vbCritical
end if
myStr = myStr + StrKar + "Сервисы:" + StrKar
If ping("ya.ru") then
myStr = myStr + "Интернет (ya.ru) - [OK]" + StrKar
Else
myStr = myStr + "Интернет (ya.ru) - [недоступен!!!]" + StrKar
status = vbCritical
end if
'----------------------------
' Пример nslookup()
'----------------------------
If Nslookup("microsoft.com") then
myStr = myStr + "DNS Server (nslup microsoft.com) - [OK]" + StrKar
Else
myStr = myStr + "DNS Server (nslup microsoft.com) - [недоступен!!!]"
+ StrKar
status = vbCritical
end if
'----------------------------
' Пример IsAPIPA()
'----------------------------
if IsAPIPA then
myStr = myStr + StrKar + "Дополнительно:" + StrKar + "IP адрес - [APIPA!!!]"
+ StrKar
myStr = myStr + "Внимание. Обнаружен некорректный ip адрес!!!" + StrKar
myStr = myStr + "Перезагрузите компьютер. Если проблема повторится, проверьте
доступность DHCP сервера либо назначьте ip адрес вручную" + StrKar
myStr = myStr + "Примечание: Если при этом у вас прекрасно работает сеть,
считайте данное сообщение ошибочным" + StrKar
else
myStr = myStr + StrKar + "Дополнительно:" + StrKar + "IP адрес - [OK] (Не
APIPA)" + StrKar
end if
'----------------------------
' Вывод результатов
'----------------------------
msgbox myStr, status, "Результаты:"
'------------------
' Функции
'------------------
Function Ping(strAddr)
' Проверяем доступность компьютера с помощью команды PING
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("%comspec% /c ping.exe -n 1 " &
strAddr)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)
' Возвращаем результат:
Ping = InStr(strPingResults, "ttl=")
End Function
Function Nslookup(strAddr)
' Проверяем работу DNS сервера через nslookup
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("%comspec% /c nslookup.exe -q=mx
" & strAddr)
strNslookupResults = LCase(objScriptExec.StdOut.ReadAll)
' Возвращаем результат:
Nslookup = InStr(strNslookupResults, "mail")
End Function
Function IsAPIPA()
' Проверяет, нет ли сетевых карт, получивших APIPA адрес
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("%comspec% /c ipconfig /all")
strIsAPIPAResults = LCase(objScriptExec.StdOut.ReadAll)
' Возвращаем результат:
IsAPIPA = InStr(strIsAPIPAResults, "169.254.")
End Function
www.4its.ru