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

PowerShell中按后缀将AD组名字符串拆分至两个数组的方案

处理AD组字符串拆分到Add/Remove数组的PowerShell方案

正则匹配方案

针对带" - add"/" - remove"后缀的AD组字符串,用多行正则可精准提取组名,完美适配含空格、连字符的组名:

# 示例输入字符串
$inputString = @"
Group Name With Spaces - add
Another-Group-With-Dashes - remove
Third Group - add
"@

# 提取需添加的组
$addGroups = [regex]::Matches($inputString, '^(.*?)\s+-\s+add$', [System.Text.RegularExpressions.RegexOptions]::Multiline) | 
             ForEach-Object { $_.Groups[1].Value }

# 提取需移除的组
$removeGroups = [regex]::Matches($inputString, '^(.*?)\s+-\s+remove$', [System.Text.RegularExpressions.RegexOptions]::Multiline) | 
                ForEach-Object { $_.Groups[1].Value }

正则说明:

  • ^/$:匹配每行的开头/结尾(需启用Multiline选项)
  • (.*?):非贪婪匹配组名部分,避免过度匹配到后缀
  • \s+-\s+:匹配组名和标识之间的空格+连字符+空格,兼容多空格情况

非正则遍历方案

如果对正则不熟悉,也可以用行拆分+结尾判断的方式实现:

# 示例输入字符串
$inputString = @"
Group Name With Spaces - add
Another-Group-With-Dashes - remove
Third Group - add
"@

# 拆分每行并过滤空行
$lines = $inputString -split "`n" | Where-Object { $_ -match '\S' }

# 初始化数组
$addGroups = @()
$removeGroups = @()

# 遍历处理每行
foreach ($line in $lines) {
    if ($line.EndsWith(" - add")) {
        # 截取组名部分(减去" - add"的6个字符)
        $addGroups += $line.Substring(0, $line.Length - 6).TrimEnd()
    } elseif ($line.EndsWith(" - remove")) {
        # 截取组名部分(减去" - remove"的9个字符)
        $removeGroups += $line.Substring(0, $line.Length - 9).TrimEnd()
    }
}

验证输出:
可添加以下代码查看结果:

Write-Host "Add groups:"
$addGroups | ForEach-Object { Write-Host "- $_" }

Write-Host "`nRemove groups:"
$removeGroups | ForEach-Object { Write-Host "- $_" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:16:06