net user
Модератор: Модераторы
Сообщений: 3
• Страница 1 из 1
Здравствуйте, думаю все знаете что при вводе команды net user %USERNAME%, выводяться данные о пользователе. Так вот мне нужно узнать last logon всех пользователей. Списка всех имен пользователей нет, только в АД. Знаю что мона написать скрипт на WHS что бы выдерал их юзернаймы, таким образом мона получить список пользователей а с ним труда не составит использовать команду net user, только вот какая команда в WHS может это сделать
"Любой человек, остановившийся в своем развитии, будет заменен другим."
Ношол, выкладываю тем кому интересно, скрипт скачен с интерента. запускал из консоли cscript name.js >> c:\log.txt
//*************************************************************************
//
// Этот скрипт предназначен для получения информации о пользователях домена
//
//*************************************************************************
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/defau ... ibutes.asp
//Массив атрибутов должен содержать по крайней мере один элемент
arrAttribs = new Array ("displayName","sAMAccountName","userAccountControl"); //"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=Departments_new,ou=All Users Accounts,"+DefaultDomain.distinguishedName+"\'"+
"WHERE objectClass = \'user\' and objectCategory = \'person\'"; //Где будет идти перебор пользователей, в данном случае в Юните All Users Accounts\Departments_new
//Фильтр для отбора тех, у кого есть внешний 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);
}
//*************************************************************************
//
// Этот скрипт предназначен для получения информации о пользователях домена
//
//*************************************************************************
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/defau ... ibutes.asp
//Массив атрибутов должен содержать по крайней мере один элемент
arrAttribs = new Array ("displayName","sAMAccountName","userAccountControl"); //"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=Departments_new,ou=All Users Accounts,"+DefaultDomain.distinguishedName+"\'"+
"WHERE objectClass = \'user\' and objectCategory = \'person\'"; //Где будет идти перебор пользователей, в данном случае в Юните All Users Accounts\Departments_new
//Фильтр для отбора тех, у кого есть внешний 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);
}
"Любой человек, остановившийся в своем развитии, будет заменен другим."
Сообщений: 3
• Страница 1 из 1
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6