首页 > 解决方案 > 检查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:\Users\hveijer\VS Code Repos\migratie-uitwissel\ReadData.ps1:33 char:4
+    $row.TableName_Org[$i] -match "*"
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], ArgumentException  
    + FullyQualifiedErrorId : System.ArgumentException

标签: powershell

解决方案


正如您自己发现的那样,PowerShell 通配符/glob 机制中的转义字符是`(反引号):

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

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

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

出于这个原因,我更喜欢让 PowerShell 为我转义我的搜索词,而不是手动进行:

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

推荐阅读