Нужно искать некоторые строковые данные в свойствах USERS внутри моей AD. Я верю, что я сделал первый шаг и нашел их, но у меня есть некоторые проблемы с объединением результатов в одной таблице - мне нужно определить CN или имя пользователя (что-то, чтобы отличить объект).
Вот код для поиска от 12 до 16 символов в любых строковых свойствах:
$search = 'OU=root,DC=contoso,DC=com'
$props = @(
'CN',
'City',
'Company',
'Department',
'Description',
'Division',
'Fax',
'HomeDirectory',
'Homepage',
'HomePhone',
'Initials',
'MobilePhone',
'Office',
'OfficePhone',
'Organization',
'OtherName',
'POBox',
'PostalCode',
'State',
'StreetAddress',
'Title'
)
Get-ADUser -Filter * -Properties * -SearchBase $search | Select $props |
%{$_.psobject.properties} |
?{$_.Value -match "(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{12,16}"} |
Format-Table @{N='CN';E={$_.CN}},Name,Value -AutoSize
Это дает мне таблицу:
CN Name Value
____ ____ _____
Description 2f565#124s$Dsa
Я понимаю, что труба не удерживает CN своим концом.
Я пытался использовать foreach-object, но не смог правильно переписать все функции (например, psobject.properties) с поддержкой канала.
Мне нужно что-то вроде:
(User)CN PropName Value
CN=bradpitt,OU=Users,OU=root,DC=contoso,DC=com Description 2f565#124s$Dsa