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