Get-ADUser按属性长度过滤

时间:2012-02-03 19:24:10

标签: powershell active-directory powershell-v2.0

我似乎无法想到这一点来拯救我的生命。

我想抓住SAMAccountName 长度等于6的所有AD用户。

我希望有类似的东西

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

我正在编写一个大型脚本来首先转储所有AD用户,然后遍历每个转储用户并更新一些属性。这个脚本会经常运行,所以我想让它尽可能高效。我认为可以改进的一个领域是转储过程。

我们在AD中有大约15,000个用户,但我只对4千个用户感兴趣,特别是他们SamAccountName为6个字符的用户。出于这个原因,我不想用我的ID输出文件填充大约11,000个不必要的ID。

我想尝试避免内联 - 如果可能的话。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

试试这个:

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}

答案 1 :(得分:1)

Get-ADuser | where { $_.samaccountname.length -eq 6 } | out-file $outputFile -append