AD导出CSV列表筛选问题:仅排除开头为ARV/BBN的条目而非含该字符的
调整PowerShell脚本实现精准匹配开头字符的排除逻辑
我明白你的需求了——原来的脚本会把所有包含ARV或BBN的CN条目都排除,但你只想排除开头前3个字符恰好是ARV或BBN的条目,保留那些中间包含这些字符串的(比如PR122ARVO7这种),用来检查设备命名规范。
修改后的脚本方案
你只需要调整正则表达式,给匹配规则加上字符串起始锚点^,这样就只会匹配开头的字符了。这里有两种写法,都能实现需求:
写法1:分开匹配每个前缀
$Datei = Import-Csv "C:\FILESPATH\AD-list.csv" $Datei | Where-Object { $_.CN -notmatch "^ARV" -and $_.CN -notmatch "^BBN" } | Out-GridView -Title "Site Info"
写法2:合并正则表达式(更简洁)
把两个前缀合并成一个正则组,减少一次匹配操作:
$Datei = Import-Csv "C:\FILESPATH\AD-list.csv" $Datei | Where-Object { $_.CN -notmatch "^(ARV|BBN)" } | Out-GridView -Title "Site Info"
关键逻辑解释
^是正则表达式里的起始锚点,表示“从字符串的第一个字符开始匹配”,所以^ARV只会匹配以ARV开头的CN值,不会匹配中间包含ARV的情况- 两种写法效果完全一致,合并写法的优势是只需要执行一次正则匹配,在处理大文件时效率会稍高一点
验证示例
- 会被排除的条目:
CN=ARV-PRO7,...、CN=BBN-XXX,...(开头前3字符是ARV/BBN) - 会被保留的条目:
CN=PR122ARVO7,...、CN=XYZ-BBN123,...(ARV/BBN在字符串中间)
这样调整后,脚本就能精准筛选出不符合“开头为指定前缀”规则的条目,帮你检查设备命名是否符合规范啦。
内容的提问来源于stack exchange,提问作者Chang85
相关产品推荐
相关产品推荐

