Noob问题:powershell中自定义函数的多个参数

Noob问题:powershell中自定义函数的多个参数,powershell,Powershell,我试图简单地将两个参数传递给powershell函数。second参数$args在函数中保持为空。我错过了什么 $t= "wi-fi Adapter" if (multilike $t "*wi-fi*,*wireless*,*wan miniport*" ) { Write-Host "True" } function multilike($text, $args) { foreach ($arg in $args

我试图简单地将两个参数传递给powershell函数。second参数$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
}
两件事:

不要使用
$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*"

$args.split
->
$args.split()!被占用的名字“$args”让我怀疑我的头脑。使用字符串数组也是一个不错的解决方案。