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

PowerShell脚本需求:关联AD用户与对应计算机信息输出

PowerShell用户-计算机信息查询脚本解决方案

实现步骤

  • 通过输入的真实姓名匹配AD用户,提取SamAccountName和UserPrincipalName
  • 生成两种登录名格式(新用户firstlastname、老用户companyname-initials)
  • 查询AD中描述字段包含任一登录名的计算机
  • 将用户与对应计算机信息合并,以表格形式输出

完整脚本

# 导入AD模块(需先安装RSAT工具)
Import-Module ActiveDirectory

# 获取用户输入的真实姓名
$realName = Read-Host "请输入用户真实姓名"

# 查询AD中匹配姓名的用户
$adUser = Get-ADUser -Filter {Name -like "*$realName*"} -Properties SamAccountName, UserPrincipalName

if (-not $adUser) {
    Write-Host "未找到匹配的AD用户"
    exit
}

# 生成新用户登录名格式(名+姓全小写,示例:张三→zhangsan,John Doe→johndoe)
$nameParts = $adUser.Name -split " "
$newLoginFormat = ($nameParts[0].ToLower() + $nameParts[1].ToLower())

# 生成老用户登录名格式(公司名-姓名首字母大写,示例:contoso-ZS,contoso-JD)
$companyName = "contoso"  # 替换为你的实际公司名称
$initials = ($nameParts | ForEach-Object { $_.Substring(0,1).ToUpper() }) -join ""
$oldLoginFormat = "$companyName-$initials"

# 查询描述包含任一登录名的AD计算机
$matchedComputers = Get-ADComputer -Filter {Description -like "*$newLoginFormat*" -or Description -like "*$oldLoginFormat*"} -Properties Description

# 整理输出数据
$output = @()
foreach ($user in $adUser) {
    if ($matchedComputers) {
        foreach ($computer in $matchedComputers) {
            $output += [PSCustomObject]@{
                "真实姓名"          = $user.Name
                "SamAccountName"    = $user.SamAccountName
                "UserPrincipalName" = $user.UserPrincipalName
                "计算机名"          = $computer.Name
                "计算机描述"        = $computer.Description
            }
        }
    } else {
        # 无匹配计算机时也输出用户信息
        $output += [PSCustomObject]@{
            "真实姓名"          = $user.Name
            "SamAccountName"    = $user.SamAccountName
            "UserPrincipalName" = $user.UserPrincipalName
            "计算机名"          = "未匹配到"
            "计算机描述"        = "无"
        }
    }
}

# 输出格式化表格
$output | Format-Table -AutoSize

# 可选:导出到CSV文件
# $output | Export-Csv -Path "用户计算机信息.csv" -Encoding UTF8 -NoTypeInformation

注意事项

  • 必须先安装RSAT Active Directory PowerShell模块,管理员权限下执行Install-WindowsFeature RSAT-AD-PowerShell即可安装
  • 务必把脚本中的$companyName替换成你公司的实际名称
  • 姓名拆分逻辑需根据实际姓名格式调整:如果是中文姓名(姓在前名在后),可能需要调换$nameParts[0]和$nameParts[1]的顺序
  • 如果同一姓名匹配多个AD用户,脚本会自动遍历所有用户并查询对应计算机

内容的提问来源于stack exchange,提问作者Skunk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:14:53