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

如何将ScriptBlock传入PowerShell类方法?ScriptBlock属于什么对象类型?

PowerShell 脚本块类参数类型解答

PowerShell 中脚本块对应的正确类型是 [scriptblock],完整类型名为 [System.Management.Automation.ScriptBlock],你代码中使用的 [ScriptBlockType] 是不存在的类型,替换为 [scriptblock] 即可正常接收脚本块参数。

你现有代码还有两处可修正的问题:

  • 你定义的 myclass 构造函数是无参的,但实例化时 [myclass]::new($myscript) 传入了参数,运行会报错,如果你不需要在构造阶段传参,直接把实例化代码改成 $c = [myclass]::new() 即可
  • Invoke-Command 的标准计算机参数名是 -ComputerName,你写的 -Computer 是别名,部分环境可能无法识别,建议写标准参数名避免兼容性问题

修正后的完整可运行示例代码如下:

# 定义脚本块
$myscript = {
    write-host "hello!"
    write-host "good-bye!"
}

# 修正后的类定义
class myclass {
    myclass() {}

    method1([scriptblock]$script) {
         Invoke-Command -ComputerName comp1 -ScriptBlock $script
    }
}

$c = [myclass]::new()
$c.method1($myscript)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:01