我是启动Shell的初学者。我需要编写一个命令,以从 Activity 目录中的samccountname获取电子邮件地址。我已经将所有samaccountnames存储在Users.txt文件中。

$users=Get-content .\desktop\users.txt
get-aduser -filter{samaccountname -eq $users} -properties mail | Select -expandproperty mail

请建议我如何进行此操作。我在这里做错了什么。

最佳答案

从文件中读取后,$Users成为用户的集合。您无法将整个集合传递给过滤器,您需要一次处理一个用户。您可以使用ForEach循环执行此操作:

$users = Get-Content .\desktop\users.txt
ForEach ($User in $Users) {
    Get-ADUser -Identity $user -properties mail | Select -expandproperty mail
}

这会将每个用户的电子邮件地址输出到屏幕。

根据注释,也不需要为此使用-filter,根据上述,您可以直接将samaccountname直接发送到-Identity参数。

如果要将输出发送到另一个命令(例如export-csv),则可以使用ForEach-Object代替:
$users = Get-Content .\desktop\users.txt
$users | ForEach-Object {
    Get-ADUser -Identity $_ -properties mail | Select samaccountname,mail
} | Export-CSV user-emails.txt

在此示例中,我们使用$_表示管道中的当前项目(例如,用户),然后将命令的输出通过管道传输到Export-CSV。我认为您可能还希望这种输出同时具有samaccountname和mail,以便您可以交叉引用。

关于powershell - 从Samaccountname获取电子邮件地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43781969/

10-11 08:52