首页 > 解决方案 > 输入 .txt 文件并查找 Active Directory 并输出到 .CSV

问题描述

我有一个需要为其计算 AD 用户名的名称列表,该列表的格式与 AD 中的显示名称相同。

我运行了以下代码

Get-Content c:\test\users.txt | 
    Foreach-Object {Get-ADUser -filter "displayName -like '$($_)'" |
    Select-Object SamAccountName,name} |
    Export-Csv c:\test\output1.csv

这输出了用户名和名称的列表,但是它只输出了成功的名称解析。

我想做的是能够有一个名字列表来验证。这可能会返回错误,原因有两个:

  1. 名称不正确
  2. 用户已离开组织。

例如 input.txt,将是显示名称格式的名称列表。

我想要的输出:

AD 用户名中存在原始输入
姓名 1 真实用户名 1
姓名 2 真实用户名 2
等错误检查

提前谢谢了

标签: powershellactive-directory

解决方案


您可以在管道中创建自定义对象。同样使用 LDAP 过滤器anr(不明确的名称解析)可能会更好地处理名称列表,因为它会查找用户的多个属性以查找匹配项。

解决方案可能是这样的:

Get-Content "C:\test\users.txt" |
Foreach-Object {$user=get-aduser -ldapfilter "(anr=$_)"; `
[PSCustomObject]@{Name=$_; Username=$user.samaccountname; Exists=&{$user -ne $null}}} |
Export-Csv "c:\test\output1.csv"

推荐阅读