如何通过PowerShell导入CSV检查本地AD中的活跃用户
解决方法
你的代码存在几个明显问题:
- 括号不匹配导致语法错误
- 在
ForEach-Object里引用当前用户的属性时,应该用$_.SamAccountName而非直接调用$SamAccountName - 没有构建可导出的结构化结果,无法直接生成CSV文件
以下是可以直接使用的完整脚本,实现导入用户列表、检查AD存在性、输出状态并导出CSV:
# 导入目标CSV,确认文件内表头为sAMAccountName $userList = Import-CSV "\\tsclient\C:\Users\abc\123.csv" # 遍历用户并收集检查结果 $checkResults = foreach ($user in $userList) { $targetSam = $user.sAMAccountName # 查询AD中是否存在该用户,静默处理不存在的报错 $adUser = Get-ADUser -Filter "SamAccountName -eq '$targetSam'" -ErrorAction SilentlyContinue # 生成包含账号和状态的自定义对象 [PSCustomObject]@{ sAMAccountName = $targetSam 状态 = if ($adUser) { "活跃" } else { "已删除" } } } # 导出结果到新CSV文件,可自行修改输出路径 $checkResults | Export-CSV "\\tsclient\C:\Users\abc\AD用户核查结果.csv" -NoTypeInformation -Encoding UTF8 # 控制台打印结果,方便快速查看 $checkResults
注意事项
- 若你的CSV表头不是
sAMAccountName,需将代码中$user.sAMAccountName替换为实际列名 - 运行脚本前需确保已加载Active Directory模块(域控制器或安装了RSAT工具的机器默认支持)
- 指定
-Encoding UTF8可避免导出CSV时出现中文乱码
内容的提问来源于stack exchange,提问作者Destroyer_11
相关产品推荐
相关产品推荐

