Powershell 在AD查询上使用Foreach对象,比较管道变量
我在Powershell中有以下代码:Powershell 在AD查询上使用Foreach对象,比较管道变量,powershell,foreach,active-directory,Powershell,Foreach,Active Directory,我在Powershell中有以下代码: Get-ADUser -filter * -property Distinguishedname | Where-Object {($_.Distinguishedname.split(',')[2]).trimstart("OU=") -like 'Verkauf'} |
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}}
除了最后一行外,其他一切都正常。我想过滤特定部门的广告用户。当我剪切最后一行时,我得到以下输出(我只审查了用户):
使用该数组,我想将每个用户名与Active Directory中的Userlist进行比较,并获取它们关联的电子邮件。但结果是,当我添加最后一行时,没有得到任何输出
这可能与比较来自两个不同查询的两个管道变量有关吗
提前谢谢 可分辨名称是
Get ADUser
标准输出的一部分。您不需要使用参数-Properties
强制它。另一方面,“邮件”不是标准输出的一部分。如果我猜对了,你正在寻找广告中某个特定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
可分辨名称是
Get ADUser
的标准输出的一部分。您不需要使用参数-Properties
强制它。另一方面,“邮件”不是标准输出的一部分。如果我猜对了,你正在寻找广告中某个特定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
如果我没弄错的话,你是在过滤一个特定的OU。为什么不改用参数
-SearchBase
。它应该可以加快代码的速度,使其更易于阅读。您应该将第二个对象
直接移动到获取ADUser
后面,您不需要第二个获取ADUser
-您已经拥有了数据。如果我没有弄错,您就是在筛选一个特定的OU。为什么不改用参数-SearchBase
。它应该可以加快代码的速度,使其更易于阅读。您应该将第二个对象
直接移动到获取ADUser
的后面,而不需要第二个获取ADUser
-您已经拥有了数据。