Заполнение атрибута каскадной строкой
Я ищу способ объединить строку и поместить ее в один объект учетной записи пользователя активного каталога, если быть точным, в altsecurityidentities. Значение для ввода будет следующим: "которое является константой, и (firstName)(пробел) (lastname) (пользовательское значение, которое может быть взято из другого атрибута, который имеет форму x.yyyyyyyy.z (что важно для меня) isyyyyyy часть (.substring(2,8)) работает как шарм здесь. Я хотел бы сделать это для нескольких учетных записей, которые перечислены в переменной типа TypeName: Microsoft.ActiveDirectory.Management.ADUser. Так что это может быть установлено для всех учетных записей в переменной $accounts. Пока у меня есть код для создания значения атрибута для одной из перечисленных здесь учетных записей: $accounts |% {'constant value' + $.givenname + '' + $.surname + '' + '('+ $ (($ _. attributetename).substring(2,8))+')'} Это, я бы хотел добавить значение атрибута altsecurityidentities, записывать в журнал информацию об успехе и ошибках средства просмотра событий.
1 ответ
Вам почти там действительно нужно просто применить значение к нужному полю:
$accounts | ForEach-Object { Set-ADUser -Identity $_ -Add @{altsecurityidentities = "constant value $($_.givenname) $($_.surname) ($($_.attributename.substring(2,8)))"} }
Я привел в порядок ваш код, встраивая переменные в строку, а не используя конкатенацию, что намного чище.