从SAMaccountname获取用户电子邮件地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从SAMaccountname获取用户电子邮件地址相关的知识,希望对你有一定的参考价值。

我是PowerShell的新手,但实际上我需要一个脚本,所以我开始自己阅读这些内容并找到了powershell。

我有一个用户名单,如:

  • xyxz
  • 域名 xyxz.xyxc

此脚本应搜索我的用户列表中的所有samaccountname,并为每个samaccountname提供电子邮件地址。

获取内容C: Users xxxxx Desktop Users.txt | forEach {Get-ADUser“我不知道如何指定用户名”|选择邮件| Export-Csv output.csv}

这是我写的脚本,但我不知道如何完成它以使其工作。我知道它做得不好但我不想在没有自己做某事的情况下写一些文字。

答案

你有点亲近

Get-Content C:UsersxxxxxDesktopUsers.txt | forEach { Get-ADUser $_ -properties EmailAddress} | select -ExpandProperty EmailAddress | Out-File output.csv 

应该做的伎俩(如果你的txt文件包含samid,每行只有一个)。

您可以使用$_访问管道内的对象。另外要使用select获取属性的String值,必须使用-ExpandProperty

在这种情况下,您还必须专门选择属性(EmailAddress),因为默认情况下仅报告一组有限的属性以减少工作负载(这通过指定-properties参数来完成)。

另一答案

你的命令是正确的。但是,Get-ADUser似乎不接受UPN or Down-Level Logon Name格式的用户名。 要查询当前用户登录的域以外的域,您需要使用-Server选项。此选项接受FQDN或NetBios域名。另一件事:默认情况下,Get-ADUser仅返回默认属性集(请参阅this列表以了解默认属性),并且用户的电子邮件地址不是默认属性,因此我们需要使用-Properties选项将其添加到返回值。

命令看起来像这样:

$defaultDomain = $env:USERDOMAIN
$usersFilePath = C:UsersxxxxxDesktopUsers.txt
Get-Content $usersFilePath | %{
    if ($_.Contains("")) {
    @{username = $_.Split("")[1]; server = $_.Split("")[0]}
    } 
    elseif ($_.Contains("@")) {
        @{username = $_.Split("@")[0]; server = $_.Split("@")[1]}
    }
    else {
        @{username = $_; server = $defaultDomain}
    }
} | %{ Get-ADUser -Identity $_.username -Properties Mail -Server $_.server} | select -ExpandProperty mail

以上是关于从SAMaccountname获取用户电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

通过电子邮件从LDAP获取sAMAccountName

从Active Directory获取用户

如何从 uid Firebase 数据库中获取电子邮件地址?

PHP 从他们的电子邮件地址获取用户gravatar

如何使用 JavaScript 从 Apple Pay 获取与 Apple Pay 帐户关联的用户电子邮件地址

使用 mailcore (iOS),我如何从特定电子邮件地址获取所有电子邮件?