2015-07-28 3 views
0

Я пытаюсь автоматически добавлять записи в список в Sharepoint. Я следую вместе на этом постуДобавить элемент списка в удаленный Sharepoint 2007 с помощью Powershell

http://blogs.msdn.com/b/powershell/archive/2010/06/24/using-new-webserviceproxy-to-get-modify-and-add-items-to-a-list-in-sharepoint-2007.aspx

но продолжаю получать сообщение об ошибке.

код на сегодняшний день:

$packet = [System.Xml.Linq.XElement]::Parse(@" 
<Batch OnError="Continue" ListVersion="1"> 
<Method ID="1" Cmd="New"> 
    <Field Name="Checked At">2006-1-11T09:15:30Z</Field> 
    <Field Name="Cold">0</Field> 
    <Field Name="Inbox">0</Field> 
</Method> 
</Batch> 
"@).Root; 
$uri = "http://.../_vti_bin/Lists.asmx"; 
$listName = "Daily Check"; 
$lists = New-WebServiceProxy -Uri $uri -UseDefaultCredential; 
$lists.UpdateListItems($listName,$packet); 

Это продолжает возвращаться ошибка:

Exception calling "UpdateListItems" with "2" argument(s): "Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown." 
At line:14 char:1 
+ $lists.UpdateListItems($listName,$packet); 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : SoapException 

Там, кажется, не будет много другой информации в сообщении об ошибке.

$lists Выход из

SoapVersion       : Default 
AllowAutoRedirect     : False 
CookieContainer      : 
ClientCertificates     : {} 
EnableDecompression     : False 
UserAgent       : Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.0) 
Proxy        : 
UnsafeAuthenticatedConnectionSharing : False 
Credentials       : System.Net.SystemNetworkCredential 
UseDefaultCredentials    : True 
ConnectionGroupName     : 
PreAuthenticate      : False 
Url         : http:// ... /_vti_bin/Lists.asmx 
RequestEncoding      : 
Timeout        : 100000 
Site         : 
Container       : 

Update

Оказывается, что методы чтения в норме, но запись вызывает ошибку. К сожалению, недостаточно информации об ошибке для ее действия.

ответ

0

Ваш код кажется прекрасным, за исключением того, что вы отправляете имя списка в параметре 1 в updatelistitems. У нас есть аналогичный код, но мы используем listid в первом параметре.

Чтобы получить идентификатор списка от имени списка, выполните следующие действия.

$listidandviewid = $lists.getlistandview($listname, "") 
$listid = $listandviewid.childnodes.item(0).name 

если вы хотите viewid а также вы также можете использовать.

$viewid = $listandviewid.childnodes.item(1).name 

Тогда, наконец, использовать listid

$lists.UpdateListItems($listid,$packet); 

Надеется, что это работает для вас!

+0

Когда я пытаюсь добавить вызов к 'GetListAndView', я получаю ту же ошибку. Это заставляет меня думать, что ошибка в том, как формируется соединение. –

+0

Попробуйте вывести значение $ lists. Это даст вам указание, если у вас есть настройка соединения или нет. – Jower

+0

Это кажется разумным. Я также передал его через get-members, чтобы убедиться, что есть разумные вещи (присутствуют как GetListAndView, так и UpdateListItems) –