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

如何在SharePoint PowerShell中动态构建Where-Object匹配多文件名

解决方案

方法1:使用 -in 操作符直接匹配

这是最简洁的实现方式,无需正则,直接利用PowerShell的集合匹配能力:

# 读取配置文件中的文件名(假设已将配置内容读入$configStr)
$configStr = "March-2025-File;Feb-2025-File"
# 分割字符串并去除可能的首尾空格,得到目标文件名数组
$targetFiles = $configStr -split ';' | ForEach-Object { $_.Trim() }

# 读取文档集文件夹并过滤匹配的文件
Get-ChildItem -Path "你的文档集文件夹路径" | Where-Object { $_.Name -in $targetFiles }

方法2:构建正确的正则表达式匹配(解决单文件返回问题)

之前正则分组仅返回单个文件,是因为正则模式未正确包含所有目标文件名。正确的做法是将所有文件名转义后用|拼接,限定完全匹配:

$configStr = "March-2025-File;Feb-2025-File"
# 转义文件名中的特殊正则字符,避免语法冲突
$escapedFiles = $configStr -split ';' | ForEach-Object { [regex]::Escape($_.Trim()) }
# 构建匹配任意目标文件名的正则模式
$regexPattern = '^(' + ($escapedFiles -join '|') + ')$'

Get-ChildItem -Path "你的文档集文件夹路径" | Where-Object { $_.Name -match $regexPattern }

关键注意事项

  • 务必对分割后的文件名执行Trim(),避免配置中的空格导致匹配失败
  • 若需匹配不含扩展名的文件名,将$_.Name替换为$_.BaseName即可
  • -in适合文件量和目标量不大的场景,正则则更适配带通配符的复杂匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:27:02