【问题标题】:Get-ADUser for multiple users across different servers跨不同服务器的多个用户的 Get-ADUser
【发布时间】:2021-02-03 21:35:03
【问题描述】:

好的,所以我有一个难题。我有一个我试图通过 AD 获取信息的用户列表,并且我找到了一个很好的小脚本来获取这些用户(如下所示)。我唯一遇到的问题是用户可能来自两台潜在的服务器,而我只能从一台服务器看到。

Get-Content \\C:\Users.txt |
foreach-object{
Get-ADUser -filter {SamAccountName -eq $_} -Properties "Name,EmailAddress" |
Select-Object SamAccountName,Name,EmailAddress} |
Export-CSV 'C:\Email Addresses.csv' -NoTypeInformation

问题是我不确定用户可能在哪个服务器上。为简单起见,可以将服务器标记为“Server1.com”和“Server2.com”

我需要做一些嵌套的 foreach 吗?是否也可以在 CSV 中列出服务器,以便显示 SamAccountName、Server、Name、EmailAddress? If 语句会起作用吗?最简单的方法是什么?

谢谢。

【问题讨论】:

  • 每台服务器上有多少用户?文本文件中有多少用户?如果您需要定位服务器,Get-ADUser 有一个 -Server 参数。您可以针对延迟最少的服务器查询每个用户。对于找到的每个用户,您可以从列表中删除该用户。这样当您移动到下一个服务器时,查询列表会更短。另一种选择是从所有服务器查询所有用户。然后只需在这些结果中搜索您的用户。两种方法都需要权衡取舍。
  • 您还可以为每台服务器设置一个 Get-AdUser 命令。如果在最后一条命令之前找到用户,您可以跳过剩余的命令以节省时间/资源
  • 我预计任何时候只有大约 25 个用户会出现在文本文件中。我不太担心延迟。
  • 此外,大多数用户将在主服务器上。只为少数返回空值的 if 设置一个 if 然后在备用服务器上搜索它们是否更有意义?

标签: powershell active-directory


【解决方案1】:

嵌套 foreach 是我通常采用的方式,因为我还没有找到更好的方式来查询所有 AD 以获取此信息。

如果您知道服务器名称,您可以将它们放在一个数组中,并为每个用户对象循环遍历它们。如果返回一个用户对象,您可以跳出服务器循环并转到下一个用户。我通常从包含我的大多数用户的最快服务器开始,然后相应地对其余的服务器进行排序。

代码是这样的

$servers = @("Server1", "Server2", "Server3")

Get-Content "C:\Users.txt" |
ForEach-Object {
    foreach ($server in $servers) {
        $aduser = Get-ADUser -Filter "SamAccountName -eq '$_'" -Properties Name, Mail -Server $server | Select-Object SamAccountName, Name, Mail
        if ($aduser) {
            $aduser # send object down the pipeline
            break   # break out of server loop and move to next user
        }

    }
} | Export-Csv 'C:\temp\testemail.csv' -NoTypeInformation

【讨论】:

  • 太好了!我唯一的问题是,有没有办法列出结果来自哪个服务器?我似乎无法从 get-aduser properties technet 中找到。
  • 您可以在 Select-Object 的结果上创建一个新属性,该属性从循环中捕获服务器。 Select-Object SamAccountName, Name, Mail, @{name = 'Server'; expression = { $server } }
猜你喜欢
  • 2013-02-22
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
相关资源
最近更新 更多