【发布时间】:2014-10-23 22:07:32
【问题描述】:
我无法将 [System.Messaging.Message] 类型的对象传递到我的脚本中的函数中。
例如(代码大纲)
function global:CopyQueue() {
$vTotalCountInMSMQ = $global:qSource.GetAllMessages()
foreach ($msg in $vTotalCountInMSMQ)
{
ReadAndCopyMessage $destinationQueue ([REF]$msg)
}
}
目标函数:
function global:ReadAndCopyMessage($destinationQueueName, [REF]$message)
{
$message = $message.BodyStream.Position
.etc.....
}
无法访问属性(在此对象上找不到属性“位置”;请确保它存在且可设置。)。但是,如果此代码在 CopyQueue 函数中运行,则一切正常。
我无法将其外包并在循环之外处理 $msg 对象。
提前感谢您的帮助
类似的问题没有用:
【问题讨论】:
-
您使用 [ref] 有什么原因吗?你可能需要做 $message.value.bodystream.position 因为使用 [ref] 会产生一些奇怪的语法。
-
在有和没有 [ref] 的情况下都试过,也试过 .value。没有成功。我想我尝试传递对这个对象的引用而不是副本。
-
[REF]$msg 周围的括号绝对不是您想要的。尝试删除它们。
-
两种都试过了,没有正面效果。我得到了类似
code(无法处理参数'消息'的参数转换。参数中需要引用类型。)尝试导致所有组合中的对象类型[System.Messaging.Message]。谷歌搜索了将复杂对象类型传递给函数的错误和所有组合。相反,我的问题得到 -1 ;)
标签: powershell msmq