进行字符串比较时,
-like
比较器是我通常的首选解决方案。
但是有一件奇怪的事情,当我在变量中使用通配符时,我无法理解。
这会起作用...
$Test = 'My string'
$Test -like "My*"
True
这会弄乱一些事情
$Test = '[My string]'
$Test -like "[My*"
WildcardPatternException: The specified wildcard character pattern is not valid: [My*
$Test -like '`[My*'
True
但是如何将其与用作搜索参数的变量一起使用?
$Test = 'My string'
$Search = 'My'
$Test -like "$Search*"
True
这将失败,因为
[
将被解析为通配符构造的一部分......
$Test = '[My string]'
$Search = '[My'
$Test -like "$Search*"
WildcardPatternException: The specified wildcard character pattern is not valid: [My*
我需要使用 $Search 的文字内容来代替...
解决方法当然是不在搜索变量中使用
[
$Test = '[My string]'
$Search = 'My'
$Test -like "*$Search*"
True
但这当然会捕获更多的字符串
[My
。
好吧,我真的以为我尝试过这个...... 但我一定错过了这个解决方案。
$Test = '[My string]'
$Search = '`[My'
$Test -like "$Search*"
True