Get-ADUser по всему лесу?

Мне нужно обновить некоторые атрибуты учетной записи AD пользователя с помощью Set-ADUser, но пользователь идентифицируется по электронной почте, и я не знаю, в каком из доменов моего леса он находится.

Допустим, мой лес example.com с доменами south.example.com, north, east и west. Электронные письма для каждого цвета, например red.example.com (white., pink. и т. д.).

Просто чтение атрибутов работает, если я запрашиваю глобальный каталог (Get-ADUser -server east.example.com:3268), но результирующий объект нельзя использовать для Set-ADUser (поскольку глобальный кот доступен только для чтения).

Есть ли другой вариант, кроме лестницы ifs в последовательных доменах? Что 1) некрасиво, 2) может пропустить другие домены, о которых я не знаю (не спрашивайте, это сложно).

Я попробовал Get-ADUser -server example.com (запрос корневого домена) - на прошлой неделе это сработало, больше не работает, и я понятия не имею, почему - нет сообщения об ошибке, объект просто появляется пустым.

Давайте посмотрим на код, и мы сможем начать помогать.

m0lochwalker 09.04.2019 01:08

Но я привел примеры того, что я делаю?

StanTastic 09.04.2019 08:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
4 429
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В Интернете есть много примеров для этого варианта использования... Просто найдите их, используя заголовок сообщения.

Примеры):

Powershell для вывода списка всех пользователей из доменов в лесу

Import-Module ActiveDirectory
(Get-ADForest).domains | 
% {
    Get-ADUser -filter * -SearchBase "OU=Accounts,$((Get-ADDomain -Server $_).distinguishedname)" -Server $_ | 
    Select Name,sAMAccountName | Export-CSV "C:\$_ User Accounts.csv" -nti
}

Смотрите также образцы здесь:

Код PowerShell: найти пользователя в лесу Active Directory

Как запросить пользователя в нескольких лесах с помощью AD powershell

Клянусь вам, я потратил пару дней на поиски, видимо, я задавал все неправильные вопросы... Теперь мне просто нужно проверить, смогу ли Set-ADUser работать с объектом, найденным с помощью этого метода. Спасибо, в любом случае!

StanTastic 10.04.2019 11:18

Не волнуйтесь. Это случается, и иногда это просто вопрос разбиения вопроса на части или строки, цитирующей части вопроса для более точного соответствия. Возьмите книгу «Взлом Google», в ней много хитростей. Многие из них работают в разных поисковых системах, и при поиске технических материалов я использую DuckDuckGo, так как он дает мне наилучшие технические результаты. Как только я нахожу интересные вещи, ища что-то конкретное, я всегда сохраняю это для дальнейшего использования. Это мои поисковые данные копят вещи об ОКР. ;-} --- ТБ за эти годы.

postanote 10.04.2019 20:29

Мой Google Fu обычно справляется с задачей, кажется, моя ошибка заключалась в том, что я сосредоточился на «Get-ADUser весь лес» вместо более общего запроса :-)

StanTastic 11.04.2019 13:52

Чтобы закрыть тему, вот что мне нужно: (Get-ADForest).domains |% { Get-ADUser -Server $_ -Filter {EmailAddress -eq $Mail} -Property Certificates}

StanTastic 11.04.2019 15:15
Ответ принят как подходящий

Итак, Get-ADUser поверх леса работает так, как указано выше, но поскольку я изначально хотел использовать Set-ADUser с использованием объекта из поиска, мне нужно написать немного больше кода.

Видите ли, Get-ADUser возвращает «независимый от сервера» объект, что означает, что использование этого объекта для Set-ADUser требует указания -Server, если пользователь находится в другом домене, чем вы.

Результирующий код:

(Get-ADForest).domains |% { 
    $tmpUser = Get-ADUser -Server $_ -Filter {EmailAddress -eq $Mail}
    if ($tmpUser) { 
        $user = $tmpUser
        $server = $_
        $tmpUser = $null
    }
} 

$user | Set-ADUser -Certificates @{Add=$newCert} -server $server

Не так красиво, но РАБОТАЕТ.

Другие вопросы по теме