You need to enable JavaScript to run this app. PowerShell使用Select-String匹配文件中已锁定AD账号对应ID问题
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用Select-String匹配文件中已锁定AD账号对应ID问题

PowerShell 匹配AD锁定用户与本地文件ID的实现方案

需求

从file.txt中匹配查询被锁定的AD用户,关联用户账号与文件内存储的ID字段(AD账号未存储该ID字段)。

待匹配文件 file.txt 内容

Login:                  ID:
User_SameAccountName     1111111112
User_SameAccountName2    1234252566
User_SameAccountName3    13124251255

初始问题代码

$myarray = Search-ADAccount -LockedOut | select SamAccountName

$i = 1
while($i -le 5){
Select-String -Pattern "$myarray[$i]" -Path E:\file.txt
$i += 1
}

问题表现

脚本运行无报错,但无任何匹配结果。将获取账号命令替换为Get-LocalUser | select name匹配本地用户名时,运行正常。

问题根因

  1. select SamAccountName返回的是带SamAccountName属性的自定义对象数组,不是纯字符串数组,直接用于Select-String的Pattern参数时无法正常匹配
  2. 硬编码循环下标从1开始,不符合PowerShell数组默认从0开始的规则,且固定循环到5的逻辑不灵活,容易出现下标溢出

最终解决代码

# 提取纯字符串格式的被锁定AD账号列表
$myarray = Search-ADAccount -LockedOut | select -ExpandProperty SamAccountName

# 遍历账号匹配文件内容,提取匹配成功的完整行
$result = foreach ($account in $myarray){
    Select-String -Path "你的file.txt实际路径" -Pattern $account | select -ExpandProperty Line
}
# 导出结果到指定路径
$result | Out-File '你的结果输出路径'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:36:07