Как я могу получить SID компьютера с Windows с помощью WMI?

Я не ищу идентификаторы безопасности пользователей. Я ищу SID компьютера, который активный каталог будет использовать для однозначной идентификации компьютера. Я также не хочу запрашивать сервер Active Directory, я хочу запросить сам компьютер.


(О, это было весело! Я пошел на дикого гуся chase, как говорится, пытается получить экземпляр Win32_SID, который является одноэлементным и не перечисляется обычными методами InstancesOf или Query … yadda yadda yadda.)

Ну, это зависит от того, какой компьютер Сид хочешь (серьезно!). Есть SID, который локальный компьютер использует для себя … Для этого вам просто нужно получить SID локального пользователя-администратора и удалить «-500» с конца, чтобы получить SID компьютера.

В VBScript это выглядит так:

  strComputer = "AFAPC001" strUsername = "Administrator" Установите objWMIService = GetObject (  "winmgmts: \" & strComputer & " root  cimv2") Установить objAccount = objWMIService.Get ("Win32_UserAccount.Name = '" & strUsername & "', Domain = '" & strComputer & "'") WScript.Echo  «SID учетной записи администратора:» & objAccount.SIDWScript.Echo «SID компьютера:» & Left (objAccount.SID, Len (objAccount.SID) - 4)  

В PowerShell , например:

  function get-sid {Param ($ DSIdentity) $ ID = new-object System.Security.Principal.NTAccount ($  DSIdentity) return $ ID.Translate ([System.Security.Principal.SecurityIdentifier]) .toString ()}> $ admin = get-sid "Administrator"> $ admin.SubString (0, $ admin.Length - 4) код> re> 

В C # на .NET 3.5:

  с использованием System; с использованием System.Security.Principal; с использованием System.  DirectoryServices; using System.Linq; public static SecurityIdentifier GetComputerSid () {return new SecurityIdentifier ((byte []) new DirectoryEntry (string.Format ("WinNT://{0}, Computer", Environment.MachineName)). Children.  Cast  () .First (). InvokeGet ("objectSID"), 0) .AccountDomainSid;}  

Результаты всех этих действий соответствуют ответу, который я получаю от PsGetSid. exe.


С другой стороны, есть SID, который Active Directory использует для идентификации каждого компьютера-члена домена ... Тот, который вы получаете, получая SID учетной записи компьютера в домен - тот, который заканчивается знаком доллара.

Например, используя указанную выше функцию PowerShell для члена домена с именем "CLIENT", вы можете ввести get-sid " КЛИЕНТ $ ".


2

Вы можете просто запустить reg query HKLM SOFTWARE Microsoft Cryptography/v MachineGuid из командной строки Windows..

Вот пример командного файла Windows:

  set KEY_REGKEY = HKLM  SOFTWARE  Microsoft  Cryptographyset KEY_REGVAL = MachineGuidREM Сначала проверьте наличие ключа.  reg query% KEY_REGKEY%/v% KEY_REGVAL% 2> nul ||  (echo Нет имени темы! & exit/b 1) REM запросить значение.  пропустите его через findstr, чтобы найти соответствующую строку, имеющую значение.  возьмите только жетон 3 и оставшуюся часть строки.  Нас здесь интересует %% b. set KEY_NAME = for/f "tokens = 2, *" %% a in ('reg query% KEY_REGKEY%/v% KEY_REGVAL% ^ | findstr% KEY_REGVAL%') do (  установить KEY_NAME = %% b) echo% KEY_NAME%  

Улучшите этот ответ
ответил 10 мая '14 в 18:06
  • 4
    Это не одно и то же, этот GUID НЕ является SID машины. - Андерс 02 фев. '18 в 0:45
добавить комментарий |

Вы можете просто запустить reg query HKLM SOFTWARE Microsoft Cryptography/v MachineGuid из команды Windows строка.

Вот пример командного файла Windows:

  set KEY_REGKEY = HKLM  SOFTWARE  Microsoft  Cryptographyset KEY_REGVAL = MachineGuidREM Проверить наличие ключа  запрос first.reg% KEY_REGKEY%/v% KEY_REGVAL% 2> nul ||  (echo Нет имени темы! & exit/b 1) REM запросить значение.  пропустите его через findstr, чтобы найти соответствующую строку, имеющую значение.  возьмите только жетон 3 и оставшуюся часть строки.  Нас здесь интересует %% b. set KEY_NAME = for/f "tokens = 2, *" %% a in ('reg query% KEY_REGKEY%/v% KEY_REGVAL% ^ | findstr% KEY_REGVAL%') do (  установить KEY_NAME = %% b) echo% KEY_NAME%  

1

Нашел инструмент с веб-сайта microsoft, который может легко получить вам SID

http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx

Просто загрузите файл, разархивируйте его, откройте командную строку и затем запустите psgetsid.exe.

Также есть хорошее объяснение SID с веб-сайта Microsoft

http://blogs.msdn.com/b/aaron_margosis/archive/2009/11/05/machine-sids-and-domain-sids.aspx

Улучшите этот ответ
ответ дан 9 янв.15 в 2:07

v>

  • Вторая ссылка не работает, но это та же страница из Интернет-архива. - dlh 21 апр. '20 в 18:41
добавить комментарий |

Нашел инструмент с веб-сайта Microsoft, который может легко получить вам SID

http://technet. microsoft.com/en-us/sysinternals/bb897417.aspx

Просто загрузите файл, распакуйте его, откройте командную строку и запустите psgetsid.exe.

Есть хорошее объяснение SID с веб-сайта Microsoft

http://blogs.msdn.com/b/aaron_margosis/archive/2009/11/05/machine-sids-and-domain -sids.aspx



Как получить SID домена Windows с помощью WMIC?

Я ищу решение WMIC чтобы получить SID домена Windows. Я могу найти решения только для PowerShell, однако предпочитаю подход WMIC.

В Google существует множество примеров получения SID пользователей домена, но ни один из них не говорит, как получить SID компьютера или домена.


1

Насколько мне известно, нет «SID домена» как таковой . Я предполагаю, что вы имеете в виду Идентификатор домена, который однозначно определяет домен в лесу AD.

Каждый SID в домене Active Directory включает идентификатор домена. Мне неизвестна команда WMIC, которая возвращает только этот идентификатор; однако его легко экстраполировать, проверив SID любого принципа в домене.

Например, следующая команда WMIC возвращает SID группы администраторов домена:

   C: > wmic group where name = "Domain Admins" получает имя, sid, domainDomain Name SIDCONTOSO Domain Admins S-1-5-21-1004336348-1177238915-682003330-512  

Как объясняется в статье Microsoft Docs "Как работают идентификаторы безопасности", SID состоит из следующих компонентов:

  • Уровень редакции (1)
  • Центр идентификации (5, NT Authority)
  • Идентификатор домена (21-1004336348-1177238915-682003330, Contoso)
  • Относительный идентификатор (512, администраторы домена)

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

Улучшите это ответ
отредактировано 23 августа 2018, 10:52
ответил 22 августа 2018 в 19:44
  • Что значит «само по себе»? У каждого домена есть SID, так же как у компьютеров есть SID, выданный доменом.. - Шучжэн, 23 августа 2018, 16:22
  • Что такое «Contoso»? И вы говорите «Администраторы домена», но пишете внизу «Пользователи домена» (512 против 513) - спасибо! - Шучжэн, 23 августа 2018, 16:26
  • Пользователи домена были опечаткой ... Я исправил это. Contoso - это вымышленный домен, который используется в качестве примера в документации Microsoft. Можете ли вы дать ссылку на информацию, подтверждающую, что существует такое понятие, как SID домена? - Я говорю: "Восстановите Монику" 23 августа 2018 в 10:57
  • См. здесь: msdn.microsoft.com/en-us/library/cc246018.aspx: особенно предложение: «Каждый раз, когда создается новый орган выдачи в Windows (например, развертывается новый компьютер или домен создан) ему присваивается SID "... Можете уточнить?" - Shuzheng 25 авг., В 10:05
добавить комментарий |

Насколько мне известно, «SID домена» как таковой не существует. Я предполагаю, что вы имеете в виду Идентификатор домена, который однозначно определяет домен в лесу AD.

Каждый SID в домене Active Directory включает идентификатор домена. Мне неизвестна команда WMIC, которая возвращает только этот идентификатор; однако его легко экстраполировать, проверив SID любого принципа в домене.

Например, следующая команда WMIC возвращает SID группы администраторов домена:

   C: > wmic group where name = "Domain Admins" получает имя, sid, domainDomain Name SIDCONTOSO Domain Admins S-1-5-21-1004336348-1177238915-682003330-512  

Как объясняется в статье Microsoft Docs "Как работают идентификаторы безопасности", SID состоит из следующих компонентов:

  • Уровень редакции (1)
  • Центр идентификации (5, NT Authority)
  • Идентификатор домена (21-1004336348-1177238915-682003330, Contoso)
  • Относительный идентификатор (512, администраторы домена)

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

Оцените статью
logicle.ru
Добавить комментарий