需从AD导出指定字段,排除子OU结果的PowerShell脚本求助
解决AD用户导出时排除指定子OU的问题
你的脚本问题出在Where-Object里的逻辑判断——用了-or而不是-and。用-or的话,只要用户的DistinguishedName不匹配其中一个排除OU,就会被保留,这完全不符合你要排除这4个OU的需求。正确的逻辑应该是:用户的DN同时不包含所有这4个OU的名称,才会被保留,所以必须把所有-or换成-and。
另外,脚本里用-Properties *会查询AD用户的所有属性,既浪费资源又拖慢速度,你只需要Department和Mobile这两个非默认属性,直接指定这两个就行。
修正后的完整脚本:
Get-ADUser -Filter * -SearchBase "OU=Employees,DC=MYCompany,DC=local" -Properties Department,Mobile | Select-Object Displayname,Department,Mobile | Where-Object { $_.DistinguishedName -notlike "*OU=Disabled Accounts,*" -and $_.DistinguishedName -notlike "*OU=Email ID,*" -and $_.DistinguishedName -notlike "*OU=Resources,*" -and $_.DistinguishedName -notlike "*OU=TEMPDISABLED,*" } | Export-Csv -Path C:\writable\userexport.csv -NoTypeInformation
额外加了-NoTypeInformation参数,避免导出的CSV文件开头多一行类型信息,让结果更干净。
内容的提问来源于stack exchange,提问作者Aiden
相关产品推荐
相关产品推荐

