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

使用PowerShell能否对两种不同CommandType执行过滤?

实现方案

该需求完全可实现,PowerShell原生的-like/-notlike运算符本身就支持*(匹配任意长度任意字符)、?(匹配单个字符)、[a-z](匹配指定范围内字符)等通配符规则,完全满足分别对PSParentPath和Issuer两个字段做关键词过滤的要求。

你当前的硬编码排除规则的写法可以正常运行,但可维护性较差,新增/修改排除规则需要改动过滤逻辑部分,推荐调整为分字段的排除规则数组实现,后续调整规则不需要修改过滤核心代码。

优化后完整实现代码

# 自定义配置区
$DaysBeforeExpiry = 30 # 替换为你实际需要的有效期预警天数
# PSParentPath字段排除规则,支持通配符,新增规则直接加数组元素即可
$parentPathExclusions = @(
    $Exclusion1,
    $Exclusion2,
    $Exclusion3
)
# Issuer字段排除规则,支持通配符,新增规则直接加数组元素即可
$issuerExclusions = @(
    $Exclusion4,
    $Exclusion5
)

# 主执行逻辑
$Expiry = Get-ChildItem -Path cert: -Recurse
$ExpiryDetails1 = $Expiry | Where-Object { 
    # 有效期校验
    $_.NotAfter -le (Get-Date).AddDays($DaysBeforeExpiry) -AND
    $_.NotAfter -gt (Get-Date) -AND
    # PSParentPath未匹配任何排除规则,找到第一个匹配项就终止判断,性能更优
    $parentPathExclusions.Where({$_.PSParentPath -like $_}, 'First').Count -eq 0 -AND
    # Issuer未匹配任何排除规则
    $issuerExclusions.Where({$_.Issuer -like $_}, 'First').Count -eq 0
} | Select-Object PSParentPath, Issuer, Subject, NotAfter | Format-List

注意事项

  • 通配符匹配默认不区分大小写,如果需要区分大小写,将-like替换为-clike即可
  • 如果需要模糊匹配字段中任意位置的关键词,记得在规则前后都加上*,比如要过滤PSParentPath中包含TestCA的所有项,规则写为*TestCA*
  • 如果某类字段不需要配置排除规则,给对应的数组留空即可,空数组不会触发过滤逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:00:03