Назад | Перейти на главную страницу

Исключение Powershell, sharepoint и updatelistitems ()

У меня проблема, из-за которой я получаю

"Exception calling "UpdateListItems" with "2" argument(s): "Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown."

всякий раз, когда я звоню $service.updatelistitems($listname, $xml). Я рыскал по сети и видел, что у некоторых людей возникают похожие проблемы. Мой список sharepoint называется Autos и имеет Title поле переименовано в Make и дополнительное имя поля Model, оба простых строковых поля.

Кто-нибудь знает, почему я не могу обновить свой список? Чтение списка работает нормально.

    $uri = 'http://myServerName/sandbox/_vti_bin/lists.asmx?wsdl'
    $listName = 'Autos'  # car list
    cls

    # Create the service            
    $service = New-WebServiceProxy -Uri $uri  -Namespace SpWs  -UseDefaultCredential

    # Create xml query to retrieve list.
    $xmlDoc = new-object System.Xml.XmlDocument
    $query = $xmlDoc.CreateElement("Query")
    $viewFields = $xmlDoc.CreateElement("ViewFields")
    $queryOptions = $xmlDoc.CreateElement("QueryOptions")
    $query.set_InnerXml("FieldRef Name='Full Name'")
    $rowLimit = "1000"

    $list = $null
    $service = $null

    try{
        $service = New-WebServiceProxy -Uri $uri  -Namespace SpWs  -UseDefaultCredential
    }
    catch{
        Write-Error $_ -ErrorAction:'SilentlyContinue'
    }

    # Now, we use the service object to retrieve the list.
    if($service -ne $null){
        try{
            $list = $service.GetListItems($listName, "", $query, $viewFields, $rowLimit, $queryOptions, "")
        }
        catch{
            Write-Error $_ -ErrorAction:'SilentlyContinue'
        }
    }

    # $list.data.row
    ($list.data.row).count


    # Get name attribute values (guids) for list and view
    $ndlistview = $service.getlistandview($listname, "")
    $strlistid = $ndlistview.childnodes.item(0).name
    $strviewid = $ndlistview.childnodes.item(1).name

    # Create an xmldocument object and construct a batch element and its attributes.
    $xmldoc = new-object system.xml.xmldocument

    # note that an empty viewname parameter causes the method to use the default view
    $batchelement = $xmldoc.createelement("Batch") # Capital B
    $batchelement.setattribute("onerror", "continue")
    $batchelement.setattribute("listversion", "1")
    $batchelement.setattribute("viewname", $strviewid)

    # Specify methods for the batch post using caml. to update or delete, specify the id of the item,
    # and to update or add, specify the value to place in the specified column
    $xml = ""
    $xml += "<method ID='1' cmd='Update'>" +
            "<field name='ID'>1</field>" +
            "<field name='Title'>Subaru</field>" +
            "<field name='Model'>Outback</field>" +
            "</method>"


    # Set the xml content
    $batchelement.innerxml = $xml

    $ndreturn = $null
    # $ndreturn = $service.updatelistitems($strlistid, $batchelement) # no change using listID
            $ndreturn = $service.updatelistitems($listName, $batchelement)