PowerShell中如何在比较操作中正确使用逻辑OR运算符?
PowerShell逻辑OR运算符的正确用法
你的代码无法运行是因为逻辑运算符-or的语法使用错误,-or两侧必须是完整的比较表达式,不能只写一侧的运算符和匹配规则。
修正方案1:补全完整的比较表达式
在-or后面的-cmatch前补上$_.Name,保证两边都是完整的匹配判断:
Get-Childitem -Path G:\Path\Blabla -Include *.sql* -File -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -cmatch 'somefile1.sql' -or $_.Name -cmatch 'somefile2.sql'}
修正方案2:用正则表达式合并匹配规则
更简洁的方式是在单个-cmatch里用正则的|实现OR逻辑,注意转义文件名里的.(正则中.匹配任意字符,要用\.表示实际的点):
Get-Childitem -Path G:\Path\Blabla -Include *.sql* -File -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -cmatch 'somefile1\.sql|somefile2\.sql'}
更高效的方案:直接用-Include指定多个文件
不需要后续过滤步骤,直接在Get-ChildItem的-Include参数里列出目标文件名,性能更优:
Get-Childitem -Path G:\Path\Blabla -Include somefile1.sql, somefile2.sql -File -Recurse -ErrorAction SilentlyContinue
内容的提问来源于stack exchange,提问作者Jessy
相关产品推荐
相关产品推荐

