PowerShell的if语句中能否结合变量使用-like通配符匹配?
问题根因
-like 运算符的匹配规则是 左侧为待搜索的目标字符串,右侧为带通配符的匹配模式。你当前的代码逻辑是判断短字符串 matt($name 的值)是否包含更长的字符串 matt@($current 的值),显然不可能满足条件,因此匹配失败。
调整方案
如果你的需求是判断 $current 中是否包含 $name 的内容,调换判断条件的左右两侧即可:
$name = 'matt' $current = 'matt@' if ($current -like "*$name*"){ write-host "this name matches" }
如果你确实需要判断 $name 中是否包含 $current 的内容,需要先保证 $current 的值是 $name 的子串,匹配逻辑才能正常触发。
补充说明
-like默认不区分大小写,需要大小写敏感匹配时可替换为-clike- 仅判断包含关系也可以使用字符串原生方法:
$current.Contains($name),该方法默认大小写敏感
内容的提问来源于stack exchange,提问作者Russeller
相关产品推荐
相关产品推荐

