Nano Hash - криптовалюты, майнинг, программирование

разрешать ForeignSecurityPrincipals в различающееся имя в PowerShell

У меня есть ForeignSecurityPrincipals, и мне нужно преобразовать его в distinguishedName, но я не знаю, как это сделать.

У меня есть этот код, чтобы получить NTAccount:

$m = "CN=S-1-1-11-1111111111-1111111111-1111111111-1111111,CN=ForeignSecurityPrincipals,DC=one,DC=two,DC=company,DC=com"
$member = [ADSI]("LDAP://" + $m)
$sid = New-Object System.Security.Principal.SecurityIdentifier ($member.objectSid[0], 0)
$sid.Translate([System.Security.Principal.NTAccount]).value

  • Для этого вам необходимо подключиться к внешней службе LDAP. 15.02.2018
  • Как мне это сделать в PowerShell? 15.02.2018

Ответы:


1

Вы можете привязаться к объекту, используя SID (и затем получить distinguishedName), но вы должны знать хотя бы DNS-имя домена:

$user = [ADSI]"LDAP://$domaindns/<SID=$($sid.Value)>"

Чтобы получить DNS-имя домена, вам необходимо проверить все доверительные отношения, которые есть у вашего домена, и сохранить DNS-имя и SID домена в списке. Затем вы можете сопоставить доменную часть SID пользователя со своим списком и получить DNS-имя (SID пользователя будет начинаться с SID домена).

На этой странице есть некоторая информация о том, как получить все доверительные отношения, но в конечном итоге он использует метод WMI, который может не работать в зависимости от ваших разрешений. Это не для меня. Вы можете сделать то же самое с ADSI, но я этого не делал. По крайней мере, это отправная точка.

Обновление:

Вы можете попробовать это:

$DomainSIDList = @{}

$Forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()

#Get trusts from each domain in the forest -- this will include forest trusts
ForEach($Domain in $Forest.Domains) {
    $adsisearcher = New-Object system.directoryservices.directorysearcher
    $adsisearcher.SearchRoot = [ADSI]"LDAP://CN=System,$($Domain.GetDirectoryEntry().distinguishedName)"
    $adsisearcher.Filter = "(objectclass=trustedDomain)"
    ForEach($ExtDomain in $adsisearcher.FindAll()) {
        $name = $ExtDomain.Properties["name"][0]
        "Found $($name)"
        $sid = New-Object System.Security.Principal.SecurityIdentifier ($ExtDomain.Properties["securityidentifier"][0], 0)
        if (-not $DomainSIDList.Contains($sid.Value)) {
            "Adding $($sid.Value), $($name)"
            $DomainSIDList.Add($sid.Value, $name)
        }
    }
}

После запуска $DomainSIDList будет содержать список доверенных доменов. Он будет содержать все домены в лесу, которые вам на самом деле не нужны, но это не имеет большого значения.

16.02.2018
  • Это замечательно. Большое спасибо! 20.02.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..