If you look at this prior post, I showed how you can use an xml file in a document library as a source for an input box’s jQuery autocomplete. I wanted to automate the creation of these XML files and upload them to a SharePoint Document Library. For example, I wanted to query Microsoft CRM for all our contacts, and have them appear as an autocomplete for a search input box. I wrote the following PowerShell script to automate this process:
Function JBM-SQL-XMLQueryResultsToSharePointDocLibrary{ PARAM([parameter(Mandatory = $true)]$SQLServerName,[parameter(Mandatory = $true)]$DatabaseName,[parameter(Mandatory = $true)]$Query,[parameter(Mandatory = $true)]$DocLibraryURL,[parameter(Mandatory = $true)]$FullPathFileName) $FileName=$FullPathFileName.split("\")[$FullPathFileName.split("\").Count -1] $xml=Invoke-Sqlcmd -ServerInstance $SQLServerName -database $DatabaseName -query "$Query" | ConvertTo-Xml -NoTypeInformation -As String [xml]$output=$xml -replace '<Property Name="([^"]+)">([^<]+)</Property>', '<$1>$2</$1>' -replace '<Property Name="([^"]+)"\s*/>','<$1/>' $output.save("$FullPathFileName") $webclient = New-Object System.Net.WebClient; $webclient.UseDefaultCredentials = $true $webclient.UploadFile("$DocLibraryURL/$FileName","PUT","$FullPathFileName") }
I had to use this thread’s method to change the XML produced by ConvertTo-Xml. The default output puts the field name in to a Property Name tag.
Example: Default = <Property Name=”Version”>0</Property> . I wanted it to be = <Version>0</Version>
In theory, this can be used for any SQL query.
Comments are closed.