如何在PowerShell中使用变量正确搜索通配符?

问题描述 投票:0回答:1

进行字符串比较时,

-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

powershell wildcard string-comparison
1个回答
0
投票

好吧,我真的以为我尝试过这个...... 但我一定错过了这个解决方案。

$Test = '[My string]'
$Search = '`[My'

$Test -like "$Search*"

True
© www.soinside.com 2019 - 2024. All rights reserved.