I am working on how to consume data from/to SharePoint 2010 and from/to CRM 2011. I decided to try and see if I can get the data to display in PowerShell, figuring if I can get it there, I should be able to get it anywhere? Here is the code to loop through all the Contacts in a CRM 2011 deployment.
Took me a while to figure this out. Should work with any oData source?
$url="http://your.crm.server/Instance/XRMServices/2011/OrganizationData.svc/ContactSet" $assembly = [Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions") while ($url){ $webclient = new-object System.Net.WebClient $webclient.UseDefaultCredentials = $true $webclient.Headers.Add("Accept", "application/json") $webclient.Headers.Add("Content-Type", "application/json; charset=utf-8"); $dataString=$webclient.DownloadString($url) $json=new-object System.Web.Script.Serialization.JavaScriptSerializer $data=$json.DeserializeObject($dataString) foreach ($result in $data.d.results){ write-host "$($result.FullName) , $($result.EMailAddress1)" } Write-Host "Press any key to continue ..." $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") if ($data.d.__next){ $url=$data.d.__next.ToString() } else { $url=$null } }
To loop through the items of a SharePoint 2010 list, you would change $url to:
$url=”http://sharepoint2010.server.com/_vti_bin/listdata.svc/Announcements”
Not sure if this would be valuable to anyone, but here it is!