【发布时间】: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