PDA

Показать полную графическую версию : JS код - должен выдавать SID пользователя


RRRinat
21-10-2012, 18:45
Добрый день!
JS код (должен выдавать SID пользователя):

var name = '1';
var comp = '.';
var service = GetObject("winmgmts:\\.\root\CIMV2");
var item = '';
var items = service.ExecQuery("SELECT SID FROM Win32_UserAccount WHERE Name = '"+name+"'");

for (item in items)
{
WScript.Echo(item.name);
WScript.Echo("\n");
}

Выводит:
C:\Users\1\Dropbox\scripts\windows\my.js(4, 1) (null): 0x80041021
Ругается я так понимаю на это:
?var service = GetObject("winmgmts:\\.\root\CIMV2");

Притом через vbs срабатывает все отлично, выдает sid.
Можеть где-то я ошибся тут?

Iska
21-10-2012, 18:53
1. JScript не VBScript, там свои принципы работы.
2. JScript не слишком приспособлен для работы с Wbem. Почему Вы остановили свой выбор именно на нём?
var sUserName = "1";
var sMachineName = ".";
var oSWbemServiceEx = GetObject("winmgmts:\\\\" + sMachineName + "\\root\\CimV2");
var oItem;
var сItems = new Enumerator(oSWbemServiceEx.ExecQuery("SELECT Name, SID FROM Win32_UserAccount WHERE Name = '" + sUserName + "'"));

for (; !сItems.atEnd(); сItems.moveNext())
{
oItem = сItems.item();
WScript.Echo(oItem.Name + " " + oItem.SID);
}

RRRinat
21-10-2012, 19:05
Спасибо! Код работает.

Скажем так. Его синтаксис мне знаком, в отличии от VBS. Можеть быть сейчас и написал на VBS, но уже поздно метаться, многое сделано.

Iska
21-10-2012, 19:11
Скажем так. Его синтаксис мне знаком, в отличии от VBS. Можеть быть сейчас и написал на VBS, но уже поздно метаться, многое сделано. »
Спасибо, ясно. Я сам такой. Худо-бедно могу в JScript ориентироваться, но как только в употребление идут сугубо языково-зависимые средства, например, «.prototype», мне сразу приходится идти в документацию.

RRRinat, возможно, в будущем Вам предстоит столкнуться ещё с таким, специфичным для JScript, способом: JScript: вызов методов WMI с выходными параметрами (http://forum.script-coding.com/viewtopic.php?id=625).




© OSzone.net 2001-2012