PowerShell处理管理员列表文本时排除指定用户仅输出有效用户名怎么实现
PowerShell 脚本修改方案
问题原因
多余输出来自两个维度:
- 你的
C:\AdminUsers.txt本身是net localgroup administrators命令的原生输出,自带表头Members、分隔线,以及末尾的The command completed successfully.执行提示 Select-String返回的是MatchInfo类型对象而非纯文本,直接输出会携带额外属性信息
修改后代码
建议用数组存储要排除的用户,后续扩展更方便,同时直接过滤掉无效行:
# 定义需要排除的用户列表 $excludeUsers = @("Administrator", "Admin1", "Admin2") $LocalAdmin = Get-Content C:\AdminUsers.txt | Select-Object -Skip 2 | # 跳过前2行表头和分隔线 Select-Object -SkipLast 1 | # 跳过最后1行执行成功提示 Where-Object { $trimmedUser = $_.Trim() # 过滤空行 + 排除指定用户 $trimmedUser -ne '' -and $trimmedUser -notin $excludeUsers } # 输出纯用户名 $LocalAdmin
可选优化
如果你可以控制C:\AdminUsers.txt的生成过程,生成文件时就可以先过滤冗余内容,后续读取逻辑更简单:
# 生成管理员列表文件时就过滤冗余内容 net localgroup administrators | Select-Object -Skip 2 | Select-Object -SkipLast 1 | Where-Object { $_.Trim() -ne '' } | Out-File C:\AdminUsers.txt -Encoding UTF8
内容的提问来源于stack exchange,提问作者Aouie
相关产品推荐
相关产品推荐

