我有一个字符串:$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}*")
原来我不得不使用`(斜线-反勾号(逃离*