Noob问题:powershell中自定义函数的多个参数
我试图简单地将两个参数传递给powershell函数。second参数$args在函数中保持为空。我错过了什么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
$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”让我怀疑我的头脑。使用字符串数组也是一个不错的解决方案。