簡體   English   中英

將PSObject正則表達式過濾后的結果與初始值名稱組合

[英]Combine PSObject regex filtered results with initial value names

需要在我的廣告中的USERS屬性中搜索一些字符串數據。 我相信我已經邁出了第一步,並找到了它們,但是將結果合並到一個表中卻遇到了一些麻煩-我需要確定用戶的CN或Name(用來區分對象)。 以下是在任何字符串屬性中搜索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

感謝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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM