Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сбор информации о учетных записях компьютера

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

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Имеется скрипт 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[i]);
WScript.Echo("==========================================");

var objWMIService = GetObject("winmgmts:\\\\" + arrComputers[i] + "\\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 список только локальных пользователей машины?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 04:31, 28-09-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Мда, читать надо учиться. Достаточно было добавить в запрос условие
Код: Выделить весь код
Where LocalAccount = true

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 04:37, 28-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:51, 28-09-2011 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сбор информации о учетных записях компьютера

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
AD и сбор информации о клиентском ПО Trinux Microsoft Windows NT/2000/2003 1 07-09-2011 14:37
Сбор информации и разные IP User15 Хочу все знать 7 30-12-2010 11:49
Сбор информации о пользователях и группах. GamblerAN Microsoft Windows NT/2000/2003 5 30-11-2010 12:49
Доступ - Невозможно залогиниться в двух учетных записях, пока не выйдешь из другой VictorVK Microsoft Windows 2000/XP 2 17-04-2009 17:02
[решено] Некорректное отображение чешских букв в учетных записях, справке REloadED Microsoft Windows 2000/XP 5 29-01-2007 00:36




 
Переход