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

PowerShell如何引用其他命令返回属性实现AD用户账号自动解锁

PowerShell 解锁AD账号脚本整合方案

你可以直接将查询逻辑和解锁逻辑整合,通过变量承接AD查询返回的用户对象,直接调用SamAccountName属性即可实现需求,整合后的完整代码如下,额外增加了重名场景的兼容处理,适配1500人规模的企业使用:

function unlocktm {
    # 输入用户姓名信息
    $Firstname = Read-Host "请输入用户的名"
    $Lastname = Read-Host "请输入用户的姓"

    # 从AD查询匹配的用户,获取SamAccountName属性
    $matchedUsers = Get-ADUser -Filter "Surname -like '$Lastname*' -and GivenName -like '$Firstname*'" -Properties SamAccountName

    # 处理不同查询结果
    if ($matchedUsers.Count -eq 0) {
        Write-Host "未找到匹配的AD用户,请检查输入的姓名是否正确"
        return
    }
    # 重名场景下让用户选择对应账号
    elseif ($matchedUsers.Count -gt 1) {
        Write-Host "找到多个匹配用户,请选择要解锁的用户序号:"
        for ($i=0; $i -lt $matchedUsers.Count; $i++) {
            Write-Host "$($i+1). 姓名:$($matchedUsers[$i].Name) 用户名:$($matchedUsers[$i].SamAccountName)"
        }
        $selectIndex = [int](Read-Host "请输入序号") - 1
        $targetUser = $matchedUsers[$selectIndex]
    }
    else {
        $targetUser = $matchedUsers[0]
    }

    # 执行解锁操作
    Unlock-ADAccount -Identity $targetUser.SamAccountName -Credential adminaccount
    Write-Host "用户 $($targetUser.Name)(用户名:$($targetUser.SamAccountName))的账号已解锁成功!"
}

关键实现说明

  • 获取其他命令返回的属性只需要将命令执行结果赋值给变量,通过变量名.属性名的格式即可直接调用,不需要额外的转换逻辑
  • 如果你需要保留原有的findtm独立函数,只需要将上述代码中Get-ADUser那一行替换为$matchedUsers = findtm即可,后续逻辑完全通用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:27:05