下午好
我正在尝试创建一个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
谢谢
答案 0 :(得分:0)
我将通过将带有正则表达式“ OR”字符(@event
的字符串连接起来,并使用|
运算符,从所有应排除在搜索单元中的OU中构建一个正则表达式。
由于这些字符串中的某些字符可能在正则表达式中具有特殊含义,因此在连接它们之前,请在每个字符上使用-notmatch
。
如下所示:
[Regex]::Escape()