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

