Приветствую Вас ГостьПятница, 29.03.2024, 16:01

В помощь админу


Каталог статей

Главная » Статьи » Windows » Windows

Как узнать SID пользователя

В статье рассматривается простой скрипт, который способен показать SID локального или доменного пользователя.

Хоть эта статья и является неким плагиатом давно известной информации, но я бы всё же сказал, что это импровизация моих знаний и идей, которая пригождается хоть и не повседневно, но всё же иногда нужна. А в конце данной статьи будет ссылка на другую статью, в которой нам очень пригодиться данный скрипт.
Но вначале немного теории (для тех, кто не в теме).
Нужно всего две вещи знать о SID:

  1. SID - это некие секретные идентификационные данные (дословный перевод с английского). На внешний вид представляет из себя набор цифр, обременённых фигурными скобками.
  2. SID есть в компьютере абсолютно у всего - у того, что можно пощупать (материнская плата, видеокарта, сетевая карта и т.д., а также и сам компьютер), а также и у того, что нельзя пощупать, но можно увидеть на экране монитора (программы, внешний вид explorer-а, а также пользователи).

И вот эту всё барахло помнит компьютер и хранит в реестре. Я надеюсь, что я достаточно просто объяснил, но если кому-то мало, то флаг в руки и гугл в помощь. Я не хочу загружать народ унылыми и скучными манами, но без сидов операционная система как ёжик в тумане!

Итак сам скрипт SIDfromLogin.vbs:

On Error Resume Next
Dim FLogin, a
FLogin = InputBox("Введите логин пользователя в формате: ~домен\логин~ или ~имя компьютера\логин~")
a = InStr(1, FLogin, "\")
if a>0 then
    Dim strComputer, Domain, Login, Zapros
    Domain = Left(FLogin, a-1)
    Login = Mid(FLogin,a+1)
    strComputer = "."
    Dim objWMIService, objAccount
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Zapros = "Win32_UserAccount.Name='" & Login & "',Domain='" & Domain & "'"
    Set objAccount = objWMIService.Get (Zapros)
    Wscript.Echo objAccount.SID
    Set objWMIService = Nothing
    Set objAccount = Nothing
Else
    Wscript.Echo ("Неправильно введён логин пользователя! Запустите скрипт заново и введите правильно логин пользователя!")
End If
WScript.Quit

Скрипт может работать как с локальными, так и с доменными учётками.

На заметку - как Вы думаете, что будет, если в строчке (strComputer = ".") точку заменить на имя хоста в сети? Я надеюсь, что Вы уже догадались и сможете эту мысль использовать в своих идеях, а я лишь предлагаю другую статью, в которой данный скрипт очень пригождается.

А также данный скрипт является обратным вот такому скрипту.

Жизнь админа должна быть проще.

 

Категория: Windows | Добавил: isz (18.11.2013)
Просмотров: 7605 | Комментарии: 2 | Теги: vbs, пользователь, vbscript, Sid, Скрипт | Рейтинг: 0.0/0
Всего комментариев: 2
1 nek19782  
0
Здравствуйте!

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

Спасибо за сайт.

2 isz  
0
Так так так, чувствуется, что попахивает миграцией пользователей из одного домена в другой.
Тема хорошая и очень сложная, но итог превосходит затраты.
Итак, начнём с самого главного - данный скрипт вряд ли сможет помочь с атрибутом SIDHistory. Я бы для начала ознакомился со схемой AD, затем бы преределал бы уже готовый скрипт Скрипт, автоматически формирующий HTML-страницу телефонного справочника. В этом скрипте есть код, который умеет обращаться к AD с запросом по нужным атрибутам.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Active Directory [12]
DHCP [1]
Windows [13]
Wins [1]
Групповая политика [3]
Программы [2]
Резервное копирование [6]
Сеть [5]
Скрипты [31]
Терминальный сервер [7]
Почта [7]
Реестр [2]
Реестр Windows
Командная строка [7]
CMD: Командная строка Windows
Поиск
Форма входа
Наш опрос
Оцените мой сайт
Всего ответов: 147
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика