Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сбор информации о учетных записях компьютера (http://forum.oszone.net/showthread.php?t=216647)

Delirium 28-09-2011 04:31 1761525

Сбор информации о учетных записях компьютера
 
Имеется скрипт 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 список только локальных пользователей машины?

Delirium 28-09-2011 04:37 1761526

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

Where LocalAccount = true

Iska 28-09-2011 06:51 1761538

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



Время: 05:32.

Время: 05:32.
© OSzone.net 2001-