检查powershell字符串是否包含星号



我有一个字符串:$row.TableName_Org[$i]它包含的值是

This is a happy little asterisk: '*'

现在我想做一个IF,基于字符串包含一个星号的事实。

if($row.TableName_Org[$i] -Match "*") {
//Do Something
}

然而,给了我这个错误:

"*" - Kwantiteitsmeter {x,y} wordt door niets voorafgegaan. parseren       
At C:UsershveijerVS Code Reposmigratie-uitwisselReadData.ps1:33 char:4
+    $row.TableName_Org[$i] -match "*"
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OperationStopped: (:) [], ArgumentException  
+ FullyQualifiedErrorId : System.ArgumentException

正如您自己所发现的,PowerShells通配符/glob机制中的转义字符是`(backtick(:

'string with * in it' -like '`*'

但是backtick也是可扩展(双引号(字符串的转义符,导致出现尴尬的双转义情况,例如:

$pattern = "${prefix}``*"

出于这个原因,我更喜欢让PowerShell为我逃避搜索条件,而不是手动执行:

[wildcardpattern]::Escape("${prefix}*")

原来我不得不使用`(斜线-反勾号(逃离*

最新更新