我在PowerShell中发现了一些奇怪的行为,并且无法弄清楚它为什么会这样。在以下三行代码中,为什么只有-match
返回我想要的内容,而另外两个命令什么都不返回?
Get-Service | ?{$_.Name -like "sql"}
Get-Service | ?{$_.Name.Contains("sql")}
Get-Service | ?{$_.Name -match "sql"} # This one works?
答案 0 :(得分:4)
-like
使用通配符匹配。如果您不使用任何通配符,它将完全匹配(不区分大小写)。
.Contains
对象的[String]
方法区分大小写。
-match
运算符使用正则表达式(不区分大小写)。由于模式中存在输入字符串(服务名称),因此返回$true
。