我需要将数百个AD发行组移至新的OU。仅给了我他们的电子邮件地址,我想编写一个脚本以根据samaccountname移动它们。我想知道为什么以下内容不返回任何内容,如果我对电子邮件地址进行一次一次性组过滤有效,但是foreach不返回任何内容。
下面列出的“groups.txt”只是电子邮件地址的列表。
gc groups.txt | % {
Get-ADGroup -Filter {mail -eq "$_"}| Select-Object -ExpandProperty SamAccountName
}
最佳答案
删除$_
周围的引号。
gc groups.txt | % {
Get-ADGroup -Filter {mail -eq $_}| Select-Object -ExpandProperty SamAccountName
}
在发布的过滤器脚本块中,引用该变量。由于它是一个脚本块,因此PowerShell不会首先进行任何处理,并且ActiveDirectory模块期望变量不包含在引号中。这将查找实际上是
Mail
而不是变量的电子邮件地址值的"$_"
。关于powershell - 使用电子邮件地址查找AD Distro组samaccountname,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34357724/