如何扩展Get-ADUser查询条件,获取extensionAttribute10未设置或不等于100的AD用户?
搞定Active Directory中extensionAttribute10未设置/不等于"100"的用户查询
没问题,我来帮你解决这个问题!你之前的命令只筛选出了**extensionAttribute10属性存在但值不等于"100"**的用户,但AD里那些根本没设置这个属性的用户不会被-ne条件命中——因为这些对象的属性列表里根本没有extensionAttribute10这一项。
要同时覆盖「属性未设置/为空」和「属性值不等于100」这两种情况,你只需要用-or运算符把两个条件组合起来就行,下面给你两种实用的写法:
写法1:覆盖所有属性未设置或为空的场景
这个写法会匹配extensionAttribute10完全未设置,或者属性存在但值为空字符串,再加上**属性值不等于"100"**的用户,覆盖范围最全面:
Get-ADUser -SearchBase "ou=OU1,ou=Users,dc=domain,dc=local" -filter '((extensionAttribute10 -ne "100") -or (extensionAttribute10 -notlike "*"))'
写法2:精准匹配属性完全未设置的场景
如果你只想明确筛选「extensionAttribute10属性根本不存在」的用户(排除那些属性存在但为空的情况),可以用-notexists操作符:
Get-ADUser -SearchBase "ou=OU1,ou=Users,dc=domain,dc=local" -filter '((extensionAttribute10 -ne "100") -or (-notexists extensionAttribute10))'
小补充
extensionAttribute10 -notlike "*"对应的底层LDAP过滤器是(!(extensionAttribute10=*)),能同时命中未设置属性和属性为空的用户。-notexists extensionAttribute10则是专门匹配属性完全不存在的对象,如果你确认业务场景里不会有属性为空的情况,用这个更精准。
内容的提问来源于stack exchange,提问作者IGOR LEVKOVSKY
相关产品推荐
相关产品推荐

