我试图简单地将两个参数传递给powershell函数。seccond参数$args在函数中始终为空。我遗漏了什么?
$t= "wi-fi Adapter"
if (multilike $t "*wi-fi*,*wireless*,*wan miniport*" ) {
Write-Host "True"
}
function multilike($text, $args) {
foreach ($arg in $args.split) {
if ($text -like $arg) {return $true}
}
return $false
}发布于 2021-02-24 16:14:20
有两件事:
不要使用$args
$args是自动变量,使用它作为声明的参数可能会导致意外行为。
记住调用Split()
$someString.Split将发出String.Split()方法重载的方法签名-为了执行该方法,需要提供(n空)参数列表:
function multilike($text, $patterns) {
foreach($pattern in $patterns.Split())
{ # ...由于您希望接受一个或多个字符串作为第二个参数参数,因此将其声明为字符串数组可能会有好处:
function multilike {
param(
[string]$text,
[string[]]$patterns
)
foreach($pattern in $patterns) # no need to .Split() any longer
{ # ...然后打电话说:
multilike $t *wi-fi*,*wireless*,"*wan miniport*"https://stackoverflow.com/questions/66354514
复制相似问题