You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PowerShell比较代码块放入函数后无法正常工作?

PowerShell函数参数传递错误导致比较结果不一致

问题出在PowerShell的函数调用语法上,和你写的比较逻辑本身无关:

  1. 直接变量比较的部分是正确的:$item1 -eq $item2 会正常判断两个字符串相等,输出"Values are the same"。

  2. 函数调用时的错误:
    你用了compare_items($item1, $item2)这种类似C#的参数传递写法,但在PowerShell中,这种写法会把($item1, $item2)当成一个数组对象,作为第一个参数$i1传入函数,而第二个参数$i2会被默认赋值为$null。
    此时函数内的$i1 -eq $i2实际上是在比较一个数组和$null,结果自然是$false,所以输出"Values are NOT the same"。

修正方法

改用PowerShell标准的函数调用语法——用空格分隔参数,不要加括号和逗号:

compare_items $item1 $item2

验证错误原因

可以在函数里添加一行调试输出,就能看到参数实际接收的值:

function compare_items($i1, $i2)
{
    Write-Host "`$i1的值: $i1 ; `$i2的值: $i2" # 调试行
    if ($i1 -eq $i2) {
        echo "Values are the same"
    }
    else {
        echo "Values are NOT the same"
    }
}
compare_items($item1, $item2)

执行后会看到输出:$i1的值: bill bill ; $i2的值:,说明$i1接收的是包含两个字符串的数组,$i2为空。这也是你强制转[string]没用的原因——数组转成字符串后是"bill bill",依然和$null不相等。

内容的提问来源于stack exchange,提问作者DanEvans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:12:39