Export SharePoint List Data To Xml through PowerShell
Anatoly Mironov
Today my colleague Johannes Milling wrote an awesome post: Export SharePoint List Data To XML Directly from the GUI He uses the old and forgotten RPC-based web service owssvr.dll (that has existed since SharePoint 2003). This url pattern is used to get the xml-formatted list data for a specific ListView:
http://<site_url>/_vti_bin/owssvr.dll?Cmd=Display&List=<list guid>&View=<view guid>&Query=*&XMLDATA=TRUETo automate this I have written a PowerShell function. All the details are in the comments:
function Export-OIPSPListDataAsXml {
<#
.Synopsis Exports list items as xml
.DESCRIPTION This function uses a built-in hidden service owssvr.dll in
SharePoint
.PARAMETER Web SPWeb or a url for the SPWeb object where the list resides
.PARAMETER ListName List Name (List Title)
.PARAMETER ViewName Name of the List View to export the data
.EXAMPLE Export-OIPSPListView -Web http://myawesomesite -ListName "Teddy
Bears" -ViewName "All Items"
.EXAMPLE Export-OIPSPListView -Web $webInstance -ListName "Top Links"
-ViewName "All Items"
.Notes
Name: Export-OIPSPListDataAsXml
Author: Anatoly Mironov
Last Edit: 2014-09-11
Keywords: SPList, SPWeb, SPListView, Xml
.Link http://chuvash.eu
#>
[CmdLetBinding()]
param(
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.PowerShell.SPWebPipeBind]$Web,
[Parameter(Mandatory=$true)] [string]$ListName,
[Parameter(Mandatory=$true)] [string]$ViewName)
$spWeb = $Web.Read()
$list = $spWeb.Lists[$ListName]
if (!$list) {
throw "List $ListName on web $($spWeb.Url) could not be found"
}
$view = $list.Views[$ViewName]
if (!$view) {
throw "View $ViewName on web $ListName could not be found"
}
$url = "{0}/_vti_bin/owssvr.dll?Cmd=Display&List={1}&View={2}&Query=*&XMLDATA=TRUE" `
-f $spWeb.Url, $list.ID, $view.ID
$wc = New-Object Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.DownloadString($url)
}