I created an external content type in SharePoint 2013 and now I’m trying to read the data from my external list using PowerShell. I am  connecting to a SQL Server Database and I am getting the following error:

An error occurred while enumerating through a collection: The shim execution failed unexpectedly – Could not load file or assembly ‘System.Data.OracleClient, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089′ or one of its dependencies. Either a required impersonation level was not
provided, or the provided impersonation level is invalid. (Exception from HRESULT: 0x80070542)..

Something isn’t right here.

So first I’m loading the SharePoint addins

function Load_SPAddin()

{

   $ver = $host | select version

   if ($ver.Version.Major -gt 1) {$host.Runspace.ThreadOptions = "ReuseThread"}

   if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)

   {

      Add-PSSnapin "Microsoft.SharePoint.PowerShell"

   }
}

Load_SPAddin

Then I’m loading the web, the list and the items

$siteUrl = ...
$web = Get-SPWeb $siteUrl
$UserList = $web.Lists["External Users"]

Write-Host "The user list contains" $UserList.Items.Count "items"

$eitems = $UserList.GetItems()

The above getItems gives me the above error. until…. I run my PowerShell as Administrator and things are starting to work.

Then I’m walking through all the items

foreach ($eitem in $eitems)
{
   ... some code here ...
}

And I’m getting another error:

Exception calling “GetItemById” with “1” argument(s): “The shim execution failed unexpectedly – Proxy
creation failed. Default context not found..”

All I have to add to the script before loading the web are the following 2 lines: :

$ctx = Get-SPServiceContext $siteUrl
$scope = new-object Microsoft.SharePoint.SPServiceContextScope $ctx

And my items are read in without any problem.

Advertisements