VBS/WSH/JS - [решено] Сбор информации о учетных записях компьютера

Ответить
Аватара пользователя
Delirium

VBS/WSH/JS - [решено] Сбор информации о учетных записях компьютера

Сообщение Delirium »

Имеется скрипт WMI(сгенерирован автоматом с программы
Scriptomatic
от MS):


читать дальше »




var wbemFlagReturnImmediately = 0x10;

var wbemFlagForwardOnly = 0x20;



var arrComputers = new Array("Firsov");

for (i = 0; i < arrComputers.length; i++) {

WScript.Echo();

WScript.Echo("==========================================");

WScript.Echo("Computer: " + arrComputers);

WScript.Echo("==========================================");



var objWMIService = GetObject("winmgmts:\\\\" + arrComputers + "\\root\\CIMV2");

var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", "WQL",

wbemFlagReturnImmediately | wbemFlagForwardOnly);



var enumItems = new Enumerator(colItems);

for (; !enumItems.atEnd(); enumItems.moveNext()) {

var objItem = enumItems.item();

WScript.Echo("Domain: " + objItem.Domain);

WScript.Echo("Name: " + objItem.Name);


WScript.Echo("Status: " + objItem.Status);

}

}



function WMIDateStringToDate(dtmDate)

{

if (dtmDate == null)

{

return "null date";

}

var strDateTime;

if (dtmDate.substr(4, 1) == 0)

{

strDateTime = dtmDate.substr(5, 1) + "/";

}

else

{

strDateTime = dtmDate.substr(4, 2) + "/";

}

if (dtmDate.substr(6, 1) == 0)

{

strDateTime = strDateTime + dtmDate.substr(7, 1) + "/";

}

else

{

strDateTime = strDateTime + dtmDate.substr(6, 2) + "/";

}

strDateTime = strDateTime + dtmDate.substr(0, 4) + " " +

dtmDate.substr(8, 2) + ":" +

dtmDate.substr(10, 2) + ":" +

dtmDate.substr(12, 2);

return(strDateTime);

}






Т.е. цепляемся к любой машине(в примере к Firsov), и просим вывести список всех локальных пользователей.

Собственно, интересуют только записи в коде:

WScript.Echo("Domain: " + objItem.Domain);

WScript.Echo("Name: " + objItem.Name);



На WinXP отрабатывает как надо. На Win 7 же выдает список ВСЕХ доменных пользователей. А т.к. у меня еще есть доверительные отношения с другим доменом(точнее с двумя), то ИНОГДА еще и выдает список пользователей доверенного домена. Почему так? И как получить через WMI список только локальных пользователей машины?
Аватара пользователя
Delirium

Re: VBS/WSH/JS - [решено] Сбор информации о учетных записях компьютера

Сообщение Delirium »

Мда, читать надо учиться. Достаточно было добавить в запрос условие



Код:

Код: Выделить всё

Where LocalAccount = true
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Сбор информации о учетных записях компьютера

Сообщение Iska »

Delirium, у меня и под XP без этого условия выдавала и доменных пользователей. А под Windows 2000, помнится, в схеме свойства LocalAccount нет, но там выдавались только локальные пользователи, без доменных (опять же — у меня).



Можно ещё через ADSI …
читать дальше »


…попробовать (для провайдера «WinNT:» наличие домена вроде как не обязательно):



Код:

Код: Выделить всё

Option Explicit
Dim strComputer
Dim objIADsContainer
Dim objIADsUser
strComputer = "bla-bla-bla" 'WScript.CreateObject("WScript.Network").ComputerName
Set objIADsContainer = GetObject("WinNT://" & strComputer & ",computer")
objIADsContainer.Filter = Array("user")
For Each objIADsUser In objIADsContainer
	WScript.Echo "[" & objIADsUser.Name & "] on [" & objIADsContainer.Name & "]"
Next
Set objIADsUser      = Nothing
Set objIADsContainer = Nothing
WScript.Quit 0
Ответить

Вернуться в «Скриптовые языки администрирования Windows»