如何从CSV计算机名称列表查询AD中处于停用状态的对应设备
需求说明
查询Active Directory(AD)中处于停用状态的计算机,查询范围仅限定为指定CSV列表内包含的计算机名称,最终仅输出该CSV列表中存在的停用设备。
原有脚本问题
现有脚本的逻辑存在问题:将CSV提取的计算机名通过管道传给Get-ADComputer时,-Filter {(Enabled -eq $False)}参数会全局检索AD域内所有符合停用条件的计算机,忽略管道传入的限定范围,最终返回的是全域停用设备,不符合筛选要求。
修正后脚本
# 读取目标CSV中的所有计算机名称存入数组 $targetPcList = Import-CSV -Path "C:\pc_names.csv" | Select -ExpandProperty Name # 查询全域停用设备后,筛选仅在目标列表内的设备导出 Get-ADComputer -SearchBase 'XXX' -Filter {Enabled -eq $False} -Properties Name,OperatingSystem | Where-Object {$targetPcList -contains $_.Name} | Export-CSV "C:\Temp\DisabledComps.CSV" -NoTypeInformation -Encoding UTF8
补充说明
- 如果你使用的CSV文件路径不是csv后缀,可自行修改
Import-CSV的Path参数值为你的实际文件路径 - 新增的
-Encoding UTF8参数用于避免导出CSV时出现中文乱码,无中文需求可直接删除 - 如果目标计算机列表量级很小,也可改用遍历查询的写法,上述写法在AD设备量级较大时查询效率更高
内容的提问来源于stack exchange,提问作者chkdsk
相关产品推荐
相关产品推荐

