对不在组中的用户(不包括OU)运行AD搜索

时间:2019-11-22 12:49:26

标签: powershell active-directory

下午好

我正在尝试创建一个PS脚本,以拉出不在某个安全组中的所有用户。我设法使它工作正常。但是我要求它省略某些OU,因为我不希望在此过程中包括某些帐户,例如终止的用户和支持帐户。

因此我创建了以下代码来执行此操作,但它似乎失败了。它在我尝试添加一些过滤的地方。有人可以帮忙将其指向正确的方向吗?

import-Module activedirectory
$results = @()
$users = Get-ADUser  -Properties memberof -Filter {enabled -eq $true} | ? {$_.DistinguishedName -notlike "*,OU=Exchange,OU=Support Accounts,OU=Terminated Users and Computers do not use,OU=TerminatedEmployeesContractors,OU=TestAccounts*"} * 
$ExportPath = 'c:\app\users_in_ou1.csv'
foreach ($user in $users) {
    $groups = $user.memberof -join ';'
    $results += New-Object psObject -Property @{'User'=$user.name;'Groups'= $groups}
    }
$results | Where-Object { $_.groups -notmatch 'SG_XXXXXXXXXXX' } | Select-Object user | export-csv $ExportPath

谢谢

1 个答案:

答案 0 :(得分:0)

我将通过将带有正则表达式“ OR”字符(@event的字符串连接起来,并使用|运算符,从所有应排除在搜索单元中的OU中构建一个正则表达式。
 由于这些字符串中的某些字符可能在正则表达式中具有特殊含义,因此在连接它们之前,请在每个字符上使用-notmatch

如下所示:

[Regex]::Escape()