我正在尝试自动将记录添加到Sharepoint中的列表中。我正在关注这篇文章
但仍然收到错误。
迄今为止的代码:
$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 :
看起来read方法没问题,但是write导致了错误。不幸的是,没有足够的关于错误的信息来采取行动。
答案 0 :(得分:0)
您的代码似乎没有问题,只是您要将参数1中的列表名称发送到updatelistitems。我们有类似的代码,但我们在第一个参数中使用了listid。
要从列表名称中获取列表的ID,请执行以下操作。
$listidandviewid = $lists.getlistandview($listname, "")
$listid = $listandviewid.childnodes.item(0).name
如果你也想要viewid,你也可以使用。
$viewid = $listandviewid.childnodes.item(1).name
然后最后使用listid
$lists.UpdateListItems($listid,$packet);
希望它适合你!