ModelTools/Export-NAVEventPublishers.ps1
function Export-NAVEventPublishers { param ( [parameter(Mandatory = $true)] [String] $ModuleToolAPIPath, [parameter(Mandatory = $true)] [String] $SourceFile, [parameter(Mandatory = $true)] [String] $DestinationFolder ) import-module (join-path $ModuleToolAPIPath NavModelToolsAPI.dll) -WarningAction SilentlyContinue -ErrorAction Stop $Model = Get-NAVObjectModel -NavObjectsTextFile $SourceFile -TimeExecution #write-verbose -Message "Number of publishers: $($Model.EventPublishers.Count)" $Publishers = $Model.EventPublishers $Problems = @() $NoProblems = @() $Content = @() $NumberOfRaises = $publishers.usedby | where MappingType -eq CodeLines | Group UsingElement | Select Count, Name $Content += "$(($Publishers | measure).Count) published events found." $Content += "Number of times a publisher was raised: " foreach ($NumberOfRaise in $NumberOfRaises) { $Content += "$($NumberOfRaise.Count) : $($NumberOfRaise.Name)" } $Content2 = @() $Content2 += '' $Content2 += 'DETAILS:' Foreach ($Publisher in $Publishers) { $Content2 += $Publisher.FullName $UsedBys = $publisher.UsedBy | where MappingType -eq CodeLines if ($UsedBys.Count -eq 0) { $usedbys = Find-CodeLines -ObjectModel $Model -SearchString $Publisher.Name -HideProgress } if ($UsedBys.Count -eq 0) { Write-host -ForegroundColor Red "Nothing Found for $($Publisher.FullName)" $Problems += $Publisher $Content += "0 : $($Publisher.FullName)" } else { $NoProblems += $Publisher } foreach ($UsedBy in $UsedBys) { $Content2 += " Raised in: " + $UsedBy.SourceElement.FullName if (!$UsedBy.SourceElement.CodeLines) { $Source = $UsedBy.CodeLines } else { $Source = $UsedBy.SourceElement.CodeLines } $Content2 += " Code lines:" $Content2 += Get-NAVCodeSnippet -CodeLines $Source -FocusText $Publisher.Name -NumberOfContextLines 10 -Indent 4 } } $Content += $Content2 $ExportFilename = "$DestinationFolder\Publishers_$([io.path]::GetFileNameWithoutExtension($SourceFile)).txt" $Content | Set-Content -Path $ExportFilename } |