Я пытаюсь получить общее представление о наших пользователях Active Directory и о том, к каким группам они относятся.
Исходя из фона Java, я подумал, что мог бы просто использовать вложенный цикл for дляитерируйте один раз для пользователей, а другой раз для групп, соответственно передавая выходные данные.После тестирования я понял, что у меня возникла проблема, из-за которой группы не отображались должным образом из-за того, как командлет Select форматирует значение.Я ссылался на Значение свойства Split в Powershell , но я не думаю, что это именно то, что я ищу, поскольку мне нужен способ для распознавания отношений между группами пользователей. В приведенном ниже коде у меня есть 1 цикл длязначения теста.
$user = @(Get-ADUser -Filter * -Properties * | Select DisplayName)
for ($i = 0; $i -le ($user.length - 1); $i += 1) {
$group=@(Get-ADUser -Filter "Name -eq '$user[$i]'" | Get-ADPrincipalGroupMembership | Select name)
echo $user[$i]
echo $group[$i]
}
Я проверил его с одним пользователем, используя параметр Identity:
$ group = Get-ADUser -Identity "Имя Фамилия" |Get-ADPrincipalGroupMembership |Выберите имя
, которое дало мне такой вывод:
DisplayName
.....................
Пользователь 1
<# отсутствующие группы #>
Пользователь 2
Пользователь 3
...
Я заметил пробелы между пользователями, где предполагалось значение группы.Я провел некоторое исследование и считаю, что проблема заключается в командлете Select-object;Я использую Select DisplayName для пользователей и Select name для групп, но PowerShell не может проанализировать оба, так как они занимают один и тот же столбец, поэтому я предполагаю, что это главная проблема.То, что я хочу, должно выглядеть примерно так:
DisplayName
.....................
Пользователь 1
Группа 1
Группа 2
Группа 3
Пользователь 2
Группа 1
Группа 2
Группа 3
Пользователь 3
...
Возможно, я ошибался, но есть лиспособ решить это?