Поиск неактивных пользователей в Active Directory
Описание:
Для системного администратора, поиск неактивных пользователей является одной из наиболее приоритетных задач, особенно при большом количестве записей в базе данных. Данный скрипт значительно облегчит работу админа. Скрипт на HTA+JS выводит в файл список пользователей в домене Active Directory (AD), которые не логинились "X" дней.
Была еще поставлена задача на создание скрипта, который получал бы список последних логинов в ICQ-клиенте, однако для этого нужно было скачать QIP 2005, что мне не нужно на данный момент. Если у кого-то есть соображения по поводу этой темы, можете отписаться мне, опубликую на сайте от вашего имени.
Ну а пока не об этом. Ниже можете видеть рабочую версию скрипта. Если что-то непонятно, то обращайтесь по обратной связи на сайте.
<html> <head> <title>LastLogonTime script</title> </head> <script language="JScript"> var TRUE = 1; var ForReading = 1; var ForWriting = 2; var DAYMSECS = 86400000; var DomObj, CollObj, sSubDir; var iNumUsers = 0; var CutOff; var WSHShell = new ActiveXObject("WScript.Shell"); var fs = new ActiveXObject("Scripting.FileSystemObject"); var WSHShell = WScript.CreateObject("WScript.Shell"); function OnClickButton(){ var sDomain = document.getElementById('domain').value; // домен в котором ищем var iCutOffDays = document.getElementById('days').value; // количество дней CutOff = new Date(); CutOff.setTime( CutOff.valueOf() - iCutOffDays*DAYMSECS ); DomObj = GetObject("WinNT://" + sDomain ); CollObj = new Enumerator(DomObj); for ( ; !CollObj.atEnd(); CollObj.moveNext()) { var Obj = CollObj.item(); if ( Obj.Class == "User" ) { iNumUsers++; try { if ( Obj.LastLogin > CutOff.valueOf() ) WriteLOG( Obj.name + " не заходил больше " + iCutOffDays + " дней" ); } catch( ErrorObj ) { WriteLOG( Obj.name + " никогда не заходил" ); } } } WScript.Quit(); } //################Запись лога######################## var LogFile = new Object(); function WriteLOG( sLogLine ) { var d = new Date(); var nameFile = document.getElementById('file').value; // имя лога if ( LogFile == null ) { LogFile = fs.OpenTextFile( ".\\"+nameFile, 2, TRUE ); LogFile.WriteLine( sLogLine ); } else { LogFile.WriteLine( sLogLine ); } } </script> <body> <form> Искать в домене: <input type="text" size="30" id="domain" value="default.com" /><br /> Количество дней: <input type="text" size="30" id="days" value="10" /><br /> Имя лога: <input type="text" size="30" id="file" value="log.txt" /><br /> <input type="button" name="submit" value="Call" onclick="OnClickButton()" /> </body> </html>