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

PowerShell传PSCustomObject函数参数报参数转换错误求解

报错根因

你触发类型转换错误的核心原因是参数类型名拼写错误:你在param块里写的类型是System.Management.Automation.PSCustomObejct,把Object的字母顺序写反成了Obejct,PowerShell无法识别这个不存在的类型,才会抛出“无法将PSCustomObject转换为PSCustomObejct”的错误,和对象传递方式没有关系。

正确实现方式

PSCustomObject本身就是引用类型,你只需要修正拼写错误,不需要额外做重复创建对象的操作,第一次通过ConvertFrom-Json加载得到的对象可以反复传入函数复用,默认就是按引用传递,不会生成新的对象副本。
修正后的函数代码如下:

Function Do-Something()
{
    param(
        [parameter(Mandatory=$true)]
        [PSCustomObject]$jsonObject
    )
    # 直接操作$jsonObject即可
    # 函数内对对象属性的修改会直接作用在原对象上
}
补充说明
  • 日常写脚本可以直接用简写的[PSCustomObject]类型约束,不需要写全长长的命名空间,能大幅降低手滑拼错类型名的概率
  • 普通业务场景不需要额外加[ref]修饰参数,PSCustomObject作为引用类型默认传参就符合你“单次创建、多次复用”的需求
  • 只有当你需要在函数内修改变量本身的指向(比如把传入的$jsonObject重新赋值为一个全新的对象,且希望外部变量同步变更指向)的时候,才需要用到[ref]关键字,处理JSON配置对象的常规场景完全用不到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:57:16