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

PowerShell脚本块Invoke返回集合而非Int32如何解决

根本原因

PowerShell 脚本块(ScriptBlock)的Invoke()方法默认会将所有返回结果包裹在Collection<PSObject>类型中返回,无论脚本块内部返回的是单个值还是数组,这就是你得到集合类型而非预期Int32的原因。

修复方案

有两种通用方案都可以满足「不需要手动取[0]、同时保留Getter返回数组的原始结构」的需求:

  1. 使用InvokeReturnAsIs()方法替代Invoke()
    这个方法会直接返回脚本块的原始输出,不会额外包裹集合:
$property = @{
    Getter = { 80 };
}

# 替换原有的Invoke调用
$value = $property.Getter.InvokeReturnAsIs()
$value.GetType() # 输出Name = Int32

测试验证:

  • 当Getter返回单个值时,$value.GetType()会返回预期的Int32类型
  • 当Getter返回数组时,$value会是原始返回的数组类型,没有额外嵌套层级
  1. 使用&调用操作符执行脚本块
    如果需要兼容低版本PowerShell,可以用调用操作符执行脚本块,同样返回原始结果:
$value = & $property.Getter

内容的提问来源于stack exchange,提问作者Wouter de Kort

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:48:07