You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:00:21