>我在Powershell中有以下代码:
Get-ADUser -filter * -property Distinguishedname |
Where-Object {($_.Distinguishedname.split(',')[2]).trimstart("OU=") -like 'Verkauf'} |
Select-Object @{name='User'; expression={$_.samaccountname}}, @{Name='Abteilung' ;Expression={($_.Distinguishedname.split(',')[1]).trimstart("OU=")}} |
Sort-Object Abteilung, user |
Where-Object {$_.Abteilung -eq "z"} |
ForEach-Object{get-aduser -filter * -Properties mail | Where-Object {$_.samaccountname -eq $_.User}}
除了最后一行之外,一切都有效。我想过滤特定部门的 AD 用户。当我剪切最后一行时,我得到以下输出(我只审查了用户(:
User Abteilung
---- ---------
xx Z
xx Z
xx Z
xx Z
xx Z
xx Z
使用该数组,我想将每个用户名与活动目录中的用户列表进行比较,并获取其关联的电子邮件。但结果是,当我添加最后一行时,我没有得到任何输出。
它是否与来自 2 个不同查询的 2 个管道变量的比较有关?
提前感谢!
可分辨名称是Get-ADUser
标准输出的一部分。您无需使用参数-Properties
强制使用它。另一方面,"邮件"不是标准输出的一部分。 如果我猜对了,并且您正在寻找AD中特定OU中的用户,则以下代码片段就足够了。当然,您应该为参数指定 OU 的完整路径-SearchBase
Get-ADUser -filter * -Properties mail -SearchBase 'Pfad zur OU Verkauf' |
Where-Object { ($_.Distinguishedname.split(',')[1]).trimstart("OU=") -eq "z" } |
Select-Object @{name = 'User'; expression = { $_.samaccountname } }, @{Name = 'Abteilung' ; Expression = { ($_.Distinguishedname.split(',')[1]).trimstart("OU=") } }, Mail |
Sort-Object Abteilung, user