从显示名称获取Samaccountname到.csv

时间:2019-06-06 20:31:32

标签: powershell active-directory export-to-csv

我有一个.csv文件,该文件带有 displayName ,然后是用户的显示名称。

我正在运行以下代码,但是返回的.csv文件为空白0KB。我已经花了数小时来做这件事,但我不知道自己在做什么错。

(我什至尝试将displayName切换为“ DisplayName”,但这不起作用)

Get-Content C:\Scripts\displaynames.txt | ForEach {
   Get-ADUser -Filter "DisplayName -eq '$user'" -Properties Name, SamAccountName, City, co, DistinguishedName | 
Select Name,SamAccountName, City, co, DistinguishedName
} | Export-CSV -path C:\output\paininthebut.csv -NoTypeInformation

我只需要简单返回 displayName = samaccountname

2 个答案:

答案 0 :(得分:1)

如果您的文件实际上是一个Csv文件,每一列都有标题,
displayname是其中之一-然后使用Import-Csv获取数据。

ForEach-Object使用变量$_$PSItem来分配当前迭代的数据行,并将这些列作为属性。

因此更改为:

Import-Csv C:\Scripts\displaynames.txt | ForEach {
   Get-ADUser -Filter "DisplayName -eq '$($_.DisplayName)'" -Properties Name, SamAccountName, City, co, DistinguishedName | 
Select Name,SamAccountName, City, co, DistinguishedName
} | Export-CSV -path C:\output\paininthebut.csv -NoTypeInformation

阅读有关mklement0Get-AdUser-filter的问题的有用答案

答案 1 :(得分:0)

好的,我知道了问题所在。输入文件仅返回一些名称的原因是,其中一些名称包含空格。例如 美国能源部,约翰被写成 约翰·杜 在姓氏的最后一个字母和逗号之间留有多余的空格。为了只获取displayName,我使用以下脚本: 导入Csv C:\ Scripts \ inputfile.txt |每次{    Get-ADUser-筛选器“ displayName -eq'$($ _。displayName)'”-属性名称,SamAccountName | 选择名称,SamAccountName } |导出CSV-路径C:\ output \ outputfile.csv -NoTypeInformation