PowerShell自定义验证函数未按预期过滤字符串,请求排查
问题排查:PowerShell验证函数未按预期跳过"abc"
核心问题出在你用了PowerShell的**自动变量$input**作为函数参数名。$input是PowerShell内置的特殊变量,专门用于接收管道输入,不能作为自定义参数名使用——当你尝试通过-input $item传递参数时,PowerShell不会把值赋给这个自定义参数,函数内的$input始终是内置的空枚举,导致$input -eq "abc"永远不成立,函数每次都返回"valid",所以所有元素都会被输出。
修正方案
把函数参数名替换为非保留字(比如$testInput),修改后的完整代码如下:
$string = "abc,def,ghi,jkl,abc,mno,pqr" $splitString = $string.Split(',') function test{ param( $testInput ) if ($testInput -eq "abc"){ return "invalid" } else{ return "valid" } } foreach ($item in $splitString) { if ((test -testInput $item) -eq "invalid") { continue } Write-Output $item }
运行这段代码后,会正确跳过所有"abc",输出def、ghi、jkl、mno、pqr。
内容的提问来源于stack exchange,提问作者newbiecoder
相关产品推荐
相关产品推荐

