【发布时间】:2022-01-18 16:56:55
【问题描述】:
我已经编写了足够多的 PS 代码来遍历 displayNames 列表(例如“John Smith”、“Taylor Hanson” - 全部存储在 txt 文件的单独行中)以返回足够的数据到另一个可用于邮件合并等的文本文件中。说服成千上万的员工简单地更新 Windows 就像打破石头一样!它必须在某种程度上自动化......
这是代码...让用户打开特定文本文件并稍后保存的功能不在视野范围内...
$displayname = @()
$names = get-content $FileIN
foreach ($name in $names) {
$displaynamedetails = Get-ADUser -filter { DisplayName -eq $name } | Select Name, GivenName, Surname, UserPrincipalName
$displayname += $displaynamedetails
}
$displayname | Export-Csv -NoTypeInformation -path $fileOUT -Encoding UTF8
有时,列表中的姓名可能拼写错误,或者员工可能已离开组织。
如果出现错误,是否可以将诸如“未找到”之类的语句写入文本文件的特定行(以便轻松并排可以比较两个文件吗?
对于我尝试找到的大多数其他解决方案,答案基于 samAccoutName 或将名字和姓氏合并在一起。在这里,我对显示名称特别感兴趣。
谢谢
【问题讨论】:
-
当
Get-ADUser找不到匹配的用户时,您是否检查过$DisplayNameDetails的值? -
当我故意在“输入”列表中拼错一些 displayNames 名称时,PS shell 不会显示错误。这是我能给你的最好答案。
-
它不会抛出错误。返回值是什么,即
$DisplayNameDetails?
标签: powershell active-directory