Я пытаюсь вызвать Copy.asmx WebService of SharePoint из сценария PowerShell:
$copyWS = .\Connect-WebService.ps1 $copyWsdlUrl -requiresAuthentication
$copyWS.UseDefaultCredentials = $true
[FieldInformation[]]$fieldInfos = $null
[System.Byte[]]$data = $null
$copyWS.GetItem($fileUrl, [ref]$fieldInfos, [ref]$data)
Результат: GetItem возвращает 0 в случае успеха, но $ fieldInfos и $ data равны $ null. Если я делаю то же самое с консольным приложением C #, оно отлично работает и с данными. Длина равна длине моего файла.
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?
Следуя совету beefarino, я позвонил в $ copyWS.GetItem и получил:
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)
Так что мои параметры выглядят правильно, я даже изменил тип $ fieldInfos для отображения полного имени Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3http___moss__vti_bin_Copy_asmx.FieldInformation[]
, но безрезультатно.