Articles about European Sharepoint Hosting Service
SharePoint 2013 Hosting – HostForLIFE.eu :: Find All Lists And Libraries Using Infopath In SharePoint
InfoPath is one of the most popular and widely used forms design and development solution that developers and IT consultants use alike, primarily across on-premise versions. However, there are no direct out-of-the-box means of identifying lists/libraries using InfoPath.
Once again, PowerShell comes to the rescue. Using a simple PowerShell, we can easily identify the lists/libraries using InfoPath Forms. We can extend it and generate a report out of it as well.
This script can identify all the lists and libraries that use InfoPath. This can be useful for scenarios like –
- Identify lists using InfoPath to consider them for replacement with other solutions like Nintex Forms, K2 SmartForms, etc.
- Convert/Re-engineer InfoPath forms to PowerApps
- Generate a report containing lists using InfoPath form, and replace them with CSOM designs
- User Profile service embedded in InfoPath works differently in SharePoint 2016 than that of SharePoint 2010. A report of all InfoPath enabled list/library will be beneficial to perform the fix.
The Script
1 |
######################################### #### Infopath Usage Identifier #### #### Scope - Site Collection #### #### Input - Site Collection URL #### ######################################### $siteCollectionURL = "http://sharepoint.devbox.com/sites/mysitecollection" if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) { Add-PSSnapin Microsoft.SharePoint.PowerShell; } try { $mySite = Get-SPSite -Identity $siteCollectionURL $myWebs = Get-SPWeb -Site $mySite -Limit All $results = @() foreach ($myWeb in $myWebs) { Write-Host "Looking in WEB: " $myWeb.Url -ForegroundColor Green foreach ($myList in $myWeb.Lists) { if ($myList.ContentTypes[0].ResourceFolder.Properties["_ipfs_infopathenabled"] -eq $true) { Write-Host "Found this list using Infopath - " $myList.Title -ForegroundColor Blue $RowDetails = @{ "Site Collection" = $siteCollectionURL "Web" = $myWeb "List Name" = $myList.Title "List URL" = $myList.DefaultViewUrl } $results += New-Object PSObject -Property $RowDetails } } $myFileName = [Environment]::GetFolderPath("Desktop") + "\InfopathDependencyFinder-SiteCollectionScope-" + (Get-Date).ToString('MM-dd-yyyy') + ".csv" $results | export-csv -Path $myFileName -NoTypeInformation } Write-Host "---------------------Completed--------------------------" -ForegroundColor Green } catch { $ErrorMessage = $_.Exception.Message Write-Host $ErrorMessage } |
The key here is the line below,
- $myList.ContentTypes[0].ResourceFolder.Properties[“_ipfs_infopathenabled”] -eq $true
This snippet above checks if the Content Type’s Resource Folder metadata has the InfoPath property – InfoPath Forms Services (_ipfs_infopathenabled) activated on it.
This script runs against site collection, but it can be very easily extended to run across subsite level or even list/library level.
Usage
The script returns the InfoPath lists/libraries below details
- Site,
- Web,
- List/Library Name,
- List/Library URL where the form is deployed
The output is in the form of a CSV file which can be very easily be converted into a .xlsx file for further processing and reporting.
Print article | This entry was posted by Peter on May 9, 2019 at 8:14 am, and is filed under European SharePoint 2013 Hosting. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |