2014-10-23 4 views
0

[System.Messaging.Message] 유형의 개체를 내 스크립트 내의 함수로 전달할 수 없습니다.Powershell에서 개체를 함수로 전달할 수 없습니다.

(코드의 개요)

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 객체를 루프 밖으로 처리하는 데 문제가 있습니다. 사전에 도움을

덕분에

비슷한 질문이 작동하지 않았다

+0

는 [참조]를 사용하는 이유가 있나요? [ref]를 사용하면 이상한 구문을 만들기 때문에 $ message.value.bodystream.position을해야 할 수도 있습니다. – TheMadTechnician

+0

시도해 보았습니다. [ref] 시도해도 .value. 성공하지 못했습니다. 복사본 대신에이 객체에 대한 참조를 전달하려고했습니다. – jens

+0

[REF] $ msg 주위의 괄호는 확실히 원하는 것이 아닙니다. 제거하십시오. –

답변

0

당신이 더 이상 [REF] 사용하지 않도록 표시 . 또한 이전에 매개 변수 사이에 ","오류가 있었음에 틀림 없으므로 작동하지 않습니다.

위의 코드는 [REF]없이 잘 작동

전화 :

ReadAndCopyMessage $destinationQueue $msg 

기능 :

function global:ReadAndCopyMessage($destinationQueueName, $message)