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

Cover Image for Tips for Forms Implementations

Tips for Forms Implementations

> And other pro tips

Cover Image for Script: Boost SIF Certificate Expiry Days

Script: Boost SIF Certificate Expiry Days

> One simple script that definitely won't delete your system32 folder

Cover Image for Super Fast Project Builds with Visual Studio Publish

Super Fast Project Builds with Visual Studio Publish

> For when solution builds take too long