为什么Powershell的-like运算符无法匹配我的目标字符串?
错误原因及解决方案
你操作的核心问题出在运算符使用逻辑错误,以及判断数组包含关系的方法不合理:
-like运算符使用逻辑错误-like是通配符匹配运算符,判断规则是左侧值是否匹配右侧的通配符模式。你执行的$repo -like $ph是判断长度更短的$repo能否完全匹配整个数组拍平后的长字符串$ph,显然不符合实际逻辑,必然返回False。
如果你坚持要通过拍平字符串的方式判断,需要调整运算符两侧的顺序并添加通配符:
$ph -like "*$repo*"
- 数组包含判断不需要手动拍平字符串
PowerShell原生提供了两种判断元素是否存在于数组的运算符,准确性和性能远高于手动拍平字符串的方案,不会出现分隔符冲突等潜在问题:
- 用
-contains运算符(数组在前,待判断元素在后):
$growth_repo_name_list -contains $repo
- 用
-in运算符(待判断元素在前,数组在后):
$repo -in $growth_repo_name_list
你已经验证$repo和$growth_repo_name_list[5]的字节序列完全一致,使用上述两种写法都会返回你预期的True结果。
内容的提问来源于stack exchange,提问作者Ameera Khan
相关产品推荐
相关产品推荐

