Handy PowerShell Script When Working With Text Fields

> Quickly analyze freeform text field inputs
Cover Image for Handy PowerShell Script When Working With Text Fields

Whenever I get a requirement that involves working with a field that contains freeform text such as Single Line Text, Multi Line Text, or Rich Text, one of the first things I do is consider all of the unique character values that are at play. If one is not careful with said values, it can result in myriad issues and errors.

The Script

Use this script to help you get the full picture of what you need to account for:

$startPath = Read-Host "Enter the starting path (ex. /sitecore/content/Website)"
$templateId = Read-Host "Enter the template ID (ex. {AFA21CDF-C747-4F93-BFBC-8268516F300B})"
$fieldName = Read-Host "Enter the field name to scan (ex. metaTitle)"
Write-Host "`nScanning '$startPath' for template '$templateId' and field '$fieldName'..."
$items = Get-ChildItem -Path $startPath -Recurse | Where-Object {
$_.TemplateId -eq $templateId -and $_.Fields[$fieldName] -and $_.Fields[$fieldName].Value
}
Write-Host "Found $($items.Count) items with a non-empty '$fieldName' field"
if (!$items.Count) {
Write-Host "No matching items found. Exiting."
exit
}
$charSet = New-Object System.Collections.Generic.HashSet[char]
Write-Host "`nAnalyzing characters..."
foreach ($item in $items) {
$fieldValue = $item.Fields[$fieldName].Value
foreach ($char in $fieldValue.ToCharArray()) {
$charSet.Add($char) | Out-Null
}
}
$sortedChars = ($charSet | Sort-Object) -join ''
Write-Host "`nUnique characters found in '$fieldName' fields:`n"
Write-Host $sortedChars

You will see an output such as:

&(),-/<;3ABCDEFGHIKLMNOPRSTUVWXYabcdefghijklmnopqrstuvwxyz®

Make note of characters which may be treated as special or escape characters wherever you are using them. Also make note of arrow characters (<) which potentially indicate HTML or XML content where you may not be expecting it.

Conclusion

With this information in mind, you can be proactive and realistic about processing, sanitization, display, and design requirements. This will also help identify which values or items require extra attention during testing.

Be unique,

-MG

I chose these words

More Posts

Cover Image for How to Run Old Versions of Solr in a Docker Container

How to Run Old Versions of Solr in a Docker Container

> Please don't make me install another version of Solr on my local...

Cover Image for Components Still Render When the Datasource Isn't Published in SitecoreAI

Components Still Render When the Datasource Isn't Published in SitecoreAI

> withDatasourceCheck() isn't enough, because Experience Edge hands you a fully formed skeleton with nothing inside it

Cover Image for On Mentorship and Community Contributions

On Mentorship and Community Contributions

> Reflections and what I learned as an MVP mentor

Cover Image for Hello World

Hello World

> Welcome to the show