逐行阅读文本并查询AD

时间:2014-03-17 09:36:13

标签: powershell active-directory

我有一个包含samids的文本文件:

XXXXXXX
YYYYYYY
ZZZZZZZ

对于每一个我需要阅读它,用它来查询AD:

dsquery user forestroot -samid XXXXXXX | dsget user -email

并将响应写入另一个文件。请帮帮我:)。

2 个答案:

答案 0 :(得分:2)

使用Get-ADUser PowerShell模块中的ActiveDirectory代替ds工具:

Import-Module ActiveDirectory

Get-Content 'C:\path\to\input.txt' |
  Get-ADUser -SearchBase 'DC=example,DC=org' -Property mail |
  select -Expand mail | Out-File 'C:\path\to\output.txt'

其中DC=example,DC=org是您的林根域的专有名称(DN)。

要以编程方式确定林根域的DN,您可以使用:

([ADSI]"LDAP://RootDSE").RootDomainNamingContext

答案 1 :(得分:0)

最后,我设法在另一篇文章中以这种方式解决它:

$a = Get-Content .\input.txt 
for ($i=0 ; $i -lt $a.Length; $i++){
 dsquery user forestroot -samid $a[$i] | dsget user -email | Select-String '@' | select -Expand Line >> output.txt
}

谢谢