我正在使用PowerShell v2和Microsoft的AD模块在我们的AD中搜索EmployeeID与特定ID匹配的帐户。 ID通常存储在AD中作为“00000123456”,但我必须搜索的值仅为“123456”部分。问题是我无法弄清楚如何在AD中进行类似搜索。这是我目前的代码
$EmpInfo = Import-csv "PSfile.csv"
$EmplID = EmpInfo.ID
$EmpAD = get-aduser -Filter {employeeId -like "*$EmplID"} -Properties * -EA Stop
此时,EmpAD始终为空
我可以解决这个问题,方法是在调用Get-ADUser之前修改EmpID以包含“* 123456”,这样可行。但我不禁认为有一个语法问题阻止了明显的方法。解决它的研究毫无结果。
答案 0 :(得分:1)
如果你的字符串真的在employeeID属性中,你可以测试:
$EmpAD = get-aduser -LDAPFilter "(employeeId=*$EmplID)" -SearchBase 'DC=dom,DC=fr' -Properties *
您可以使用LDP.EXE(或ADSI.EXE)来验证您的目录究竟是什么。
- - - - - - - - 编辑的
对我而言,如果我使用LDIF测试它是有效的:
C:\temp>ldifde -f eid.ldf -d "dc=dom,dc=fr" -r "(employeeId=*)"
Connexion à « WM2008R2ENT.dom.fr » en cours
Connexion en tant qu'utilisateur actuel en utilisant SSPI
Exportation de l'annuaire dans le fichier eid.ldf
Recherche des entrées...
Création des entrées...
3 entrées exportées
有3个对象
在使用AD Cmdlet的PowerShell中,它提供以下内容:
PS C:\> get-aduser -LDAPFilter "(employeeID=*)" | Measure-Object
Count : 3
和
$var = "123456"
PS C:\> get-aduser -LDAPFilter "(employeeID=*$var)" -properties employeeID
DistinguishedName : CN=user1 Users,OU=MonOu,DC=dom,DC=fr
EmployeeID : 00000123456
Enabled : True
GivenName : user1
Name : user1 Users
ObjectClass : user
ObjectGUID : b5e5ea59-93a6-4b24-9c3e-043a825c412e
SamAccountName : user1
SID : S-1-5-21-3115856885-816991240-3296679909-1107
Surname : Users
UserPrincipalName : user1@dom.fr
小心:我不明白为什么,但是在使用MMC修改目录和PowerShell提示符中的结果之间需要一些时间。我重新加载一个新的PowerShell解释器并重新导入AD模块。
答案 1 :(得分:0)
从性能角度来看,如果你知道ID总是一定数量的数字(带有前导零),那么你最好只是提前格式化ID。
如果您的ID应该是11位数,请执行类似$ EmplID.ToString(“D11”)的操作以将其填充。