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

PowerShell使用M2MQTT指定非标准端口创建MQTT客户端报错求助

PowerShell指定非标准端口创建MQTT客户端的错误解决方法

问题描述

尝试在PowerShell中创建MQTT客户端连接非标准端口的代理时,运行以下代码:

$MqttClient = [uPLibrary.Networking.M2Mqtt.MqttClient]("mqtt-broker.net",41383)

抛出如下错误:

Cannot convert the "System.Object[]" value of type "System.Object[]" to type "uPLibrary.Networking.M2Mqtt.MqttClient".
At line:1 char:1
+ $MqttClient = [uPLibrary.Networking.M2Mqtt.MqttClient]("ext.mqtt.drya ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : ConvertToFinalInvalidCastException 

解决方法

PowerShell中直接用类型转换语法传递多个参数会被识别为数组,而非构造函数参数,需改用以下两种正确方式调用构造函数:

方式1:使用New-Object命令

$MqttClient = New-Object uPLibrary.Networking.M2Mqtt.MqttClient("mqtt-broker.net", 41383)

方式2:使用构造函数的::new()语法

$MqttClient = [uPLibrary.Networking.M2Mqtt.MqttClient]::new("mqtt-broker.net", 41383)

原因说明

在PowerShell中,[Type](arg1, arg2)的写法是尝试将(arg1, arg2)组成的数组对象转换为Type类型,并非调用该类型带两个参数的构造函数。而New-Object或::new()才是PowerShell中调用多参数构造函数的标准方式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:45:39