如何用PowerShell实现部门名称转AD代码查询AD计算机
PowerShell实现部门名称到AD代码的映射查询
核心实现思路
通过哈希表(Hashtable)维护部门名称与AD描述代码的映射关系,读取用户输入的部门名称后自动匹配对应代码,再执行AD计算机查询。
完整脚本示例
# 部门名称与AD代码映射表,可直接在此处新增/修改部门条目 $deptMapping = @{ "Head Office" = "ABC.00.A.90.AD" "Marketing planning" = "XYZ.01.B.80.MK" "Finance Department" = "DEF.02.C.70.FN" } # 获取用户输入的部门名称 $deptName = Read-Host "Enter department Name (e.g. Head Office, Marketing planning)" # 匹配对应部门代码并执行查询 if ($deptMapping.ContainsKey($deptName)) { $targetCode = $deptMapping[$deptName] Get-ADComputer -Filter "Description -like '*$targetCode*'" -Properties Description | Select-Object Name, Description } else { Write-Host "错误:未找到该部门对应的代码,请检查输入或更新映射表。" -ForegroundColor Red }
关键部分说明
- 映射表维护:
$deptMapping是键值对结构,键为部门名称(需与用户输入完全匹配),值为AD描述中的对应代码,新增或修改部门只需在此处添加/修改条目即可。 - 输入验证:通过
ContainsKey检查用户输入的部门名称是否存在于映射表中,避免无效查询,若不存在则输出红色错误提示。 - AD查询:将匹配到的部门代码代入
Get-ADComputer的Filter条件中,筛选出描述包含对应代码的计算机,并返回名称和描述信息。
可选扩展:支持大小写不敏感匹配
如果需要允许用户输入时不区分大小写,可以修改输入匹配逻辑:
# 忽略大小写匹配部门名称 $matchedDept = $deptMapping.Keys | Where-Object { $_ -eq $deptName -or $_ -eq $deptName.ToLower() -or $_ -eq $deptName.ToUpper() } if ($matchedDept) { $targetCode = $deptMapping[$matchedDept] Get-ADComputer -Filter "Description -like '*$targetCode*'" -Properties Description | Select-Object Name, Description } else { Write-Host "错误:未找到该部门对应的代码,请检查输入或更新映射表。" -ForegroundColor Red }
内容的提问来源于stack exchange,提问作者Mass
相关产品推荐
相关产品推荐

