Forum Discussion

john john's avatar
john john
Steel Contributor
Jul 30, 2019

Exception calling "ExecuteQuery" with "0" argument(s): "The node to be inserted is from a different

Last week i was able to hide 2 site columns from New list form using this PnP script (the fields were of type Single line of text and Date/Time):-

 

$User = "admin@****.onmicrosoft.com"
$SiteURL = "https://****.sharepoint.com"
#Add references to SharePoint client assemblies and authenticate to Office 365 site – required for CSOM
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
$Password = Read-Host -Prompt "enterpassword" -AsSecureString
$Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)

#Bind to site collection
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)
$Context.Credentials = $Creds

$fieldTitle = "ProjectNumber"
$customfield = $Context.Site.RootWeb.Fields.GetByInternalNameOrTitle($fieldTitle)
$customfield.SetShowInEditForm($true)
$customfield.SetShowInNewForm($false)
$customfield.UpdateAndPushChanges($true)

$Context.ExecuteQuery()

 

but today when i try the above script to hide a site column of type drop-down on the same site collection>> i got this error on the $Context.ExecuteQuery(), as follow-

 

PS C:\windows\system32> $Context.ExecuteQuery()
Exception calling "ExecuteQuery" with "0" argument(s): "The node to be inserted is from a different document context."
At line:1 char:1
+ $Context.ExecuteQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ServerException

 

now i do not think the issue is with the field type, as i usually hide drop-down column using this PnP script without any issue.. but not sure what is going on, as this script was working for me last week (4-5 days ago!!).

Thanks in advance for any help

  • paulpascha's avatar
    paulpascha
    Bronze Contributor
    Could you try to see what happens if you separate the changes of SetShowInEditForm and SetShowInNewForm? Changing your code as follows:

    $customfield.SetShowInEditForm($true)
    $customfield.UpdateAndPushChanges($true)
    $Context.ExecuteQuery()

    $customfield.SetShowInNewForm($false)
    $customfield.UpdateAndPushChanges($true)
    $Context.ExecuteQuery()
      • paulpascha's avatar
        paulpascha
        Bronze Contributor
        I don't know exactly what's going on, but I can imagine executing both operations in a single call to executequery results in some kind of conflict internally.
  • vickyvievkit's avatar
    vickyvievkit
    Copper Contributor
    Hi John
    ,I have tried same code. But still I am getting error . My field Order Status is choice field. Please suggest if I am missing something.

    $User = "xyz.onmicrosoft.com"
    $SiteURL = "https://xyz/sites/SPTesting"
    #Add references to SharePoint client assemblies and authenticate to Office 365 site – required for CSOM
    Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
    Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
    $Password = Read-Host -Prompt "enterpassword" -AsSecureString
    $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)

    #Bind to site collection
    $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)
    $Context.Credentials = $Creds

    $fieldTitle = "Order Status"
    $customfield = $Context.Site.RootWeb.Fields.GetByInternalNameOrTitle($fieldTitle)

    $Context.Load($customfield)
    $Context.ExecuteQuery()

    $customfield.SetShowInEditForm($False)
    $customfield.UpdateAndPushChanges($true)
    $Context.ExecuteQuery()




    • Avijit8013's avatar
      Avijit8013
      Copper Contributor

      Getting the below error 

      cmdlet Get-Credential at command pipeline position 1
      Supply values for the following parameters:
      Error: Exception calling "ExecuteQuery" with "0" argument(s): "The sign-in name or password does not match one in the Microsoft account system."

       

      While running the below script

       

      #Load SharePoint CSOM Assemblies
      Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
      Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

      #Parameters
      $SiteURL = "https://jantil.sharepoint.com/sites/JantileInc"
      $CSVPath = "D:\JantileIncDup.csv"
      $BatchSize = 2000
      #Array for Result Data
      $DataCollection = @()

      #Get credentials to connect
      $Cred = Get-Credential

      Try {
      #Setup the Context
      $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
      $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName, $Cred.Password)

      #Get the Web
      $Web = $Ctx.Web
      $Lists = $Web.Lists
      $Ctx.Load($Web)
      $Ctx.Load($Lists)
      $Ctx.ExecuteQuery()

      #Iterate through Each List on the web
      ForEach($List in $Lists)
      {
      #Filter Lists
      If($List.BaseType -eq "DocumentLibrary" -and $List.Hidden -eq $False -and $List.ItemCount -gt 0 -and $List.Title -Notin("Site Pages","Style Library", "Preservation Hold Library"))
      {
      #Define CAML Query to get Files from the list in batches
      $Query = New-Object Microsoft.SharePoint.Client.CamlQuery
      $Query.ViewXml = "@
      <View Scope='RecursiveAll'>
      <Query>
      <OrderBy><FieldRef Name='ID' Ascending='TRUE'/></OrderBy>
      </Query>
      <RowLimit Paged='TRUE'>$BatchSize</RowLimit>
      </View>"

      $Counter = 1
      #Get Files from the Library in Batches
      Do {
      $ListItems = $List.GetItems($Query)
      $Ctx.Load($ListItems)
      $Ctx.ExecuteQuery()

      ForEach($Item in $ListItems)
      {
      #Fiter Files
      If($Item.FileSystemObjectType -eq "File")
      {
      #Get the File from Item
      $File = $Item.File
      $Ctx.Load($File)
      $Ctx.ExecuteQuery()
      Write-Progress -PercentComplete ($Counter / $List.ItemCount * 100) -Activity "Processing File $Counter of $($List.ItemCount) in $($List.Title) of $($Web.URL)" -Status "Scanning File '$($File.Name)'"

      #Get The File Hash
      $Bytes = $File.OpenBinaryStream()
      $Ctx.ExecuteQuery()
      $MD5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
      $HashCode = [System.BitConverter]::ToString($MD5.ComputeHash($Bytes.Value))

      #Collect data
      $Data = New-Object PSObject
      $Data | Add-Member -MemberType NoteProperty -name "FileName" -value $File.Name
      $Data | Add-Member -MemberType NoteProperty -Name "HashCode" -value $HashCode
      $Data | Add-Member -MemberType NoteProperty -Name "URL" -value $File.ServerRelativeUrl
      $Data | Add-Member -MemberType NoteProperty -Name "FileSize" -value $File.Length
      $DataCollection += $Data
      }
      $Counter++
      }
      #Update Postion of the ListItemCollectionPosition
      $Query.ListItemCollectionPosition = $ListItems.ListItemCollectionPosition
      }While($Query.ListItemCollectionPosition -ne $null)
      }
      }
      #Export All Data to CSV
      $DataCollection | Export-Csv -Path $CSVPath -NoTypeInformation
      Write-host -f Green "Files Inventory has been Exported to $CSVPath"

      #Get Duplicate Files by Grouping Hash code
      $Duplicates = $DataCollection | Group-Object -Property HashCode | Where {$_.Count -gt 1} | Select -ExpandProperty Group
      Write-host "Duplicate Files Based on File Hashcode:"
      $Duplicates | Format-table -AutoSize

      #Group Based on File Name
      $FileNameDuplicates = $DataCollection | Group-Object -Property FileName | Where {$_.Count -gt 1} | Select -ExpandProperty Group
      Write-host "Potential Duplicate Based on File Name:"
      $FileNameDuplicates| Format-table -AutoSize

      #Group Based on File Size
      $FileSizeDuplicates = $DataCollection | Group-Object -Property FileSize | Where {$_.Count -gt 1} | Select -ExpandProperty Group
      Write-host "Potential Duplicates Based on File Size:"
      $FileSizeDuplicates| Format-table -AutoSize
      }
      Catch {
      write-host -f Red "Error:" $_.Exception.Message
      }

Resources