Объедините отфильтрованные результаты регулярного выражения PSObject с именами начальных значений - PullRequest
0 голосов
/ 03 июля 2018

Нужно искать некоторые строковые данные в свойствах 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

1 Ответ

0 голосов
/ 04 июля 2018

Благодаря LotPings, это рабочий результат, который ищет от 12 до 16 символов (регулярное выражение означает: как минимум - одну заглавную букву, одну строчную букву, одну цифру и один специальный символ):

$search = 'OU=root,DC=contoso,DC=com'
$props =    @(
            '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 |
            ForEach-Object { $CN=$_.CN ; $_.psobject.properties} |
?{$_.Value -match "(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{12,16}"} | Format-Table @{N='CN';E={$CN}},Name,Value -AutoSize
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...