2011-01-26 2 views
1

채워지지를 GetItem 반환 0 성공을 위해,하지만 $ fieldInfos 및 $ data는 $ null입니다. C# Console 응용 프로그램에서 똑같은 작업을 수행하면 정상적으로 작동하며 data.Length는 파일 길이와 같습니다.밖으로 매개 변수는 내가 PowerShell은 스크립트에서 셰어의 Copy.asmx WebService를 호출하기 위해 노력하고있어

Copy copyWS = new Copy(); 
copyWS.UseDefaultCredentials = true; 

FieldInformation[] fieldInfos = null; 
byte[] data = null; 
uint result = copyWS.GetItem(fileUrl, out fieldInfos, out data); 

Console.WriteLine(result); 
Console.WriteLine(data.Length); 

내 실수는 어디에서 왔습니까? 아니면이 오류가 PowerShell 버그입니까? 난 전체 이름 Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3http___moss__vti_bin_Copy_asmx.FieldInformation[]하지만 소용을 표시 $ fieldInfos의 유형을 변경

System.UInt32 GetItem(string Url, 
Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3http___moss__vti_bin_Copy_asmx.FieldInformation[]&, jfww_71i, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Fields, 
System.Byte[]&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Stream) 

그래서 내 매개 변수를 잘 살펴 : beefarino의 조언에 따라

나는 $ copyWS.GetItem에게 전화를 얻었다.

답변

3

가정하면 연결-webservice.ps1이 새로운 webserviceproxy를 호출 끝 ...

를 Get-Member 사용하여 파워 쉘에서 웹 서비스 메서드의 서명을 확인

$copyWS | get-member

또는 작성자 를 호출하지 않고 호스트에있어서 덤핑 :

$copyWS.GetItem

프록시가 항상 기대했던 것처럼 보이지는 않습니다. 예를 들어,이 방법 :

int GetData(out byte[] value);

파워 쉘에 의해 생성 된 새로운 webserviceproxy 방법은 다음과 같습니다

void GetData([ref] $result, [ref] $resultSpecified, [ref] $value)

+0

좋은 점을, $ copyWS.GetItem 내가 얻을 : 선택 System.UInt32를 GetItem (문자열 Url, Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3http ___ moss__vti_bin_Copy_asmx.FieldInformation [] &, jfww_71i, 버전 = 0.0.0.0, 문화 = 중립, PublicKeyToken = null 필드, System.Byte [] & mscorlib, 버전 = 2.0 .0.0, 문화 = 중립, PublicKeyToken = b77a5c561934e089 스트림) – Hinek

+0

내 사용법이 맞을 것 같습니다 (제 질문 편집 참조). 다른 조언이 있습니까? – Hinek

+1

예 - 이것은 쓰레기입니다. 변수 선언에서 형식 지정자를 제거해보십시오. 왜 내가 이것을 생각하는지 모르겠지만 PowerShell은 형식을 다룰 때 hinky가 될 수 있습니다. – beefarino

관련 문제