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 NextJS: Short URL for Viewing Layout Service Response

NextJS: Short URL for Viewing Layout Service Response

> Because the default URL is 2long4me

Cover Image for Azure PaaS Cache Optimization

Azure PaaS Cache Optimization

> App Services benefit greatly from proper configuration

Cover Image for SitecoreAI Search Experiences: A First Look

SitecoreAI Search Experiences: A First Look

> And how it is different from Sitecore Search

Cover Image for Year in Review: 2022

Year in Review: 2022

> Full steam ahead