$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 } } }