$rootPath = "master:/sitecore/content"
$formsRoot = "master:/sitecore/Forms"
$formRendering = Get-Item "master:/sitecore/layout/Renderings/System/Forms/Mvc Form"
$defaultDevice = Get-LayoutDevice -Default
$forms = Get-ChildItem -Path $formsRoot -Recurse |
Where-Object { $_.TemplateName -eq "Form" }
$formLookup = @{}
foreach ($form in $forms) {
$formLookup[$form.ID.ToString()] = $form
}
$pages = Get-ChildItem -Path $rootPath -Recurse
$result = New-Object System.Collections.Generic.List[object]
foreach ($page in $pages) {
$renderings = Get-Rendering `
-Item $page `
-Device $defaultDevice `
-FinalLayout `
-Rendering $formRendering
if (-not $renderings) { continue }
foreach ($rendering in $renderings) {
if ($rendering.DataSource -and $formLookup.ContainsKey($rendering.DataSource)) {
$form = $formLookup[$rendering.DataSource]
$result.Add([pscustomobject]@{
FormName = $form.Name
FormPath = $form.Paths.FullPath
PageName = $page.Name
PagePath = $page.Paths.FullPath
DataSource = $rendering.DataSource
RenderingName = $formRendering.Name
})
}
}
}
if ($result.Count -eq 0) {
Show-Alert "No forms found as datasources under $rootPath"
}
else {
$result | Sort-Object FormName, PagePath | Show-ListView -Title "Forms report" -Property `
@{ Label = "Form Name"; Expression = { $_.FormName } },
@{ Label = "Form Path"; Expression = { $_.FormPath } },
@{ Label = "Page Name"; Expression = { $_.PageName } },
@{ Label = "Page Path"; Expression = { $_.PagePath } },
@{ Label = "Form ID"; Expression = { $_.DataSource } }
}