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

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

0 голосов
/ 08 апреля 2019

Мне нужно обновить некоторые атрибуты учетной записи 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 (поскольку, глобальный кот только для чтения).

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

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

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

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

Пример (ы):

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

0 голосов
/ 12 апреля 2019

ОК, поэтому 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

Не так хорошо, но работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...