【问题标题】:Get Users Email Address from SAMaccount从 SAMaccountname 获取用户电子邮件地址
【发布时间】:2015-01-23 06:17:09
【问题描述】:

我是 powershell 新手,但实际上我需要一个脚本,所以我开始阅读这些东西并找到了 powershell。

我有一个用户名列表,例如:

  • xyxz
  • 域名\xyxz.xyxc

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

获取内容 C:\Users\xxxxx\Desktop\Users.txt |对于每个 { Get-ADUser "我不知道如何指定用户名" |选择邮件 |导出-CSV output.csv }

这是我正在编写的脚本,但我不知道如何完成它以使其工作。我知道它做得不好,但我不想在这里写一些文字而不自己做点什么。

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

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

    命令如下所示:

    $defaultDomain = $env:USERDOMAIN
    $usersFilePath = C:\Users\xxxxx\Desktop\Users.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
    

    【讨论】:

    • 你给了我很好的信息。对我来说实际上有点难以阅读。我应该阅读更多关于 powershell 函数的内容。
    【解决方案2】:

    你很亲密

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

    应该可以解决问题(如果您的 txt 文件包含 samid,并且每行只有一个)。

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

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

    【讨论】:

    • 工作正常我可以问你更多吗?我想测试 Users.txt 所以只要有像 xx-xx\abc 这样的域,它应该修剪它。所以最后只有 abc 没有 xx-xx\。
    • @timo 这里有一篇文章可以帮助你做到这一点:technet.microsoft.com/en-us/library/ee692804.aspx
    • 最后的改进,脚本运行良好。测试后我发现脚本有问题,因为有些用户没有电子邮件。那么有没有办法在没有电子邮件的情况下跳过这些人,也许但它会进入一个单独的输出文件?
    • @timo 当然有可能,不过我不会在单行机中这样做。你所问的都是非常基本的,所以我建议你阅读 powershell 基础知识并自己做,这并不难
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多