求助:无法将AD用户查询数据导出为CSV文件,求解决方案
解决AD用户查询结果导出CSV的问题
你的代码有两个主要问题导致无法正常导出:
- foreach循环的括号位置错误,
Export-Csv没有接收到循环输出的用户数据 Get-ADUser的Filter用脚本块写法时,变量$user的解析可能出问题
修正后的代码方案一(修正foreach写法)
$infile = "C:\Temp\check.txt" $users = Get-Content $infile # 把foreach的结果收集到变量,再导出 $results = foreach ($user in $users){ Get-ADUser -Filter "Name -like '$user' -or SamAccountName -like '$user'" | Select-Object Name, SamAccountName, Enabled } $results | Export-Csv "C:\temp\Git.csv" -NoTypeInformation
修正后的代码方案二(用ForEach-Object更简洁)
Get-Content "C:\Temp\check.txt" | ForEach-Object { Get-ADUser -Filter "Name -like '$_' -or SamAccountName -like '$_'" | Select-Object Name, SamAccountName, Enabled } | Export-Csv "C:\temp\Git.csv" -NoTypeInformation
关键改动说明
- 调整循环结构:原代码中
Export-Csv接在foreach的闭合括号外面,实际上foreach语句本身不会通过管道输出结果,要么把结果存到变量再导出,要么改用ForEach-Object(它会通过管道传递输出)。 - 修改Filter写法:把脚本块
{name -like $user -or samaccountname -like $user}改成字符串格式,确保变量$user(或$_)能正确解析为查询值。 - 添加
-NoTypeInformation:避免CSV文件开头生成多余的类型注释行,让CSV更规范。
内容的提问来源于stack exchange,提问作者Aaron Kenny
相关产品推荐
相关产品推荐

