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

PowerShell自定义函数使用命名参数无法正常赋值问题求助

问题原因

你调整函数参数后没有同步修改调用逻辑才会出现异常:
之前的函数只接收1个数组参数,你传入的双元素数组会被完整赋值给$Results,所以能正常取下标0和1的内容。
改为双参数后,如果你还是直接把双元素数组当成单个参数传入,PowerShell会默认把整个数组赋值给第一个位置参数$Server,第二个参数$SecretName没有接收到任何值,就会出现你看到的空输出问题。

解决方法

根据你的使用场景选对应调用方式即可:

  1. 如果你要保留现有数组形式的数据源,用参数展开(Splatting) 适配:
    调用的时候把变量前的$换成@,PowerShell会自动把数组元素按顺序匹配到对应位置参数:
# 假设你每一组配置存在$adItem数组里,示例:$adItem = "10.0.11.110", "AD-NL"
Read-AdEnvironment @adItem
  1. 如果你想要明确用命名参数调用,显式指定每个参数的取值即可:
# 直接传字面量
Read-AdEnvironment -Server "10.0.11.110" -SecretName "AD-NL"

# 从已有数组取值传参
Read-AdEnvironment -Server $adItem[0] -SecretName $adItem[1]

完整可运行示例

Function Read-AdEnvironment {
    param ([string]$Server, [string]$SecretName)
    Write-Host "Server: ",$Server
    Write-Host "SecretName: ",$SecretName
}

# 示例数据源
$allAdEnv = @(
    @("10.0.11.110", "AD-NL"),
    @("192.168.50.101", "AD-DE"),
    @("192.168.13.9", "AD-I"),
    @("192.168.8.251", "AD-CH")
)

# 循环调用示例
foreach ($item in $allAdEnv) {
    # 以下两种写法二选一即可,输出都正常
    # Read-AdEnvironment @item
    Read-AdEnvironment -Server $item[0] -SecretName $item[1]
}

运行后就会得到你之前的正常输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:39:01