如何将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
相关产品推荐
相关产品推荐

