【问题标题】:Powershell cannot pass object to functionPowershell 无法将对象传递给函数
【发布时间】: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


【解决方案1】:

看来您不应再使用 [REF]。另外,我之前一定是在参数之间犯了常见的“,”错误,因此它不起作用。

上面的代码在没有 [REF] 的情况下也能正常工作

呼叫:

ReadAndCopyMessage $destinationQueue $msg

功能:

function global:ReadAndCopyMessage($destinationQueueName, $message)

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2021-04-01
    • 2020-07-18
    • 2015-08-30
    • 2011-12-07
    相关资源
    最近更新 更多