如何修改PowerShell脚本:排除含admin账户并统计PC用户配置文件
PowerShell脚本修改方案:统计排除含admin字样的用户配置文件
你的原脚本存在几个关键问题,导致无法满足需求,以下是修正后的脚本及说明:
修正后的完整脚本
# 获取C:\Users目录下所有用户文件夹的名称 $userProfiles = Get-ChildItem -Path "C:\Users" -Directory | Select-Object -ExpandProperty Name # 初始化符合条件的配置文件计数器 $validProfileCount = 0 # 遍历每个用户文件夹名称 foreach ($profile in $userProfiles) { # 排除名称中包含"admin"的账户(不区分大小写) if (-not ($profile -match 'admin')) { $validProfileCount++ } } # 仅当有效配置文件数量≥5时输出结果 if ($validProfileCount -ge 5) { Write-Host "符合条件的用户配置文件数量(排除含admin字样的账户): $validProfileCount" } else { Write-Host "当前PC符合条件的用户配置文件总数少于5,不输出统计结果。" }
关键修改点说明
- 修正循环语法:原脚本缺少
foreach关键字,正确的遍历语法是foreach ($profile in $userProfiles) - 改进排除逻辑:用
-match 'admin'实现不区分大小写的包含匹配,能覆盖所有名称含admin的账户(比如Administrator、LocalAdmin、userAdmin等),而原脚本的-contains只能精确匹配数组中的固定项 - 重置计数初始值:原脚本初始count设为5是错误的,改为从0开始累加符合条件的配置文件数量
- 增加数量判断:添加
if ($validProfileCount -ge 5)逻辑,仅当有效数量不少于5时才输出统计结果,否则提示场景不满足
可选调整
如果需要严格区分大小写(仅排除小写admin的账户),可以将-match替换为-cmatch;如果要排除包含多个关键词的账户,可修改匹配规则为-match 'admin|administrator'(用竖线分隔多个关键词)
内容的提问来源于stack exchange,提问作者Sloan
相关产品推荐
相关产品推荐

