我似乎无法弄清楚这能挽救我的生命。

我想捕获其SAMAccountName 长度等于6的所有AD用户。

我希望有这样的东西

Get-ADuser -filter "samaccountname.length -eq 6" | out-file $outputFile -append

我正在编写一个大型脚本,首先转储所有AD用户,然后遍历每个转储的用户并更新一些属性。该脚本将经常运行,因此我想使其尽可能高效。我认为可以改进的一个方面是转储过程。

我们在AD中大约有1.5万个用户,但我只对4000个感兴趣,特别是SamAccountName为6个字符的用户。因此,我不想在ID输出文件中填充大约11000个不必要的ID。

我想尝试并尽可能避免内联for-each。

任何帮助将不胜感激。

最佳答案

试试这个:

Get-ADuser - filter * | ? { $_.samaccountname.length -eq 6} | out-file -$outputfile -append

我通常使用Get-QADuser(来自Quest模块)来做,但是我认为Get-ADUser是相同的。

如果$ _。samaccountname不是字符串,则可能必须使用:
$_.samaccountname.tostring().length

编辑:
Get-ADUser -Filter * -Properties samaccountname | ? {$_.samaccountname.length -eq 6}

10-06 11:35