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:


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


More Stories