Making Content Author’s Lives Easier A Sitecore Utility for Bulk Field Read

When working in the CMS or DXP industry, one of our key responsibilities is to make content authors' lives easier. We need to provide them with tools and utilities that help them unlock the full potential of the CMS they use.
Recently, I encountered a similar scenario. The product team approached me with a use case where they wanted to extract values from a specific field across thousands of content items for reporting purposes. Not only that, but they also needed the ability to update these fields if necessary. This wasn’t a one-time task it had to be repeatable.
The Solution
After some brainstorming, I decided to build a user-friendly tool that lets users select content nodes, specify fields, and extract values into an Excel file with just one click.
Later, they can fill in the updated field values in the Excel sheet and upload it back. The tool will automatically update those items in Sitecore. Below is a step-by-step guide to creating this utility.
Step 1: Create a Graphical User Interface
Let’s create a simple GUI that will help the content team select content paths and specify fields.

$props = @{
Parameters = @(
@{ Name = "ContentPathItem";
Title = "Content Item Path";
Tooltip = "Select the content item path";
Source = "DataSource=/sitecore/content";
editor = "treelist";
Tab = "Search";
},
@{ Name = "FieldToSearch";
Title = "Field to search";
Tooltip = "Enter the field Name to search";
Mandatory = $true;
Tab = "Search";
},
@{ Name = "ContentPathFilterTemplate";
Title = "Template Filter";
Tooltip = "search the content based on example page template you have selected.";
Source = "DataSource=/sitecore/content";
editor = "treelist";
Tab = "Filters";
}
)
Title = "Bulk read utility"
Description = "This Utility will crawl through the content tree and search the data as per the configuration."
Width = 650
Height = 650
ShowHints = $true
OkButtonName = "Run"
CancelButtonName = "Cancel"
}
This script provides a UI where the content team can select the nodes to traverse and the fields to read.
Step 2: Define the Search Function
Now, let’s write a PowerShell function to fetch field values based on our selections.
function searchContentNode($nodeItems, $fieldsToSearch, $templateToSearch) {
$results = @()
foreach ($nodeItem in $nodeItems) {
foreach ($field in $fieldsToSearch) {
$field = $field.Trim();
$items = $nodeItem.Axes.GetDescendants() | Initialize-Item | Where-Object {
$_.Fields[$field] -ne $null -and
($templateToSearch.Count -eq 0 -or $templateToSearch.TemplateName -contains $_.TemplateName)
} | Select-Object -Property Id,
Name,
ItemPath,
TemplateName,
@{Name = "Field Name"; Expression = { $field } },
@{Name = "Field Value"; Expression = {
if ($_.Fields[$field].Type -eq "DateTime") {
[DateTime]::ParseExact($_.Fields[$field].Value, "yyyyMMddTHHmmss'Z'", $null).ToString("yyyy-MM-dd HH:mm:ss")
}
elseif ($_.Fields[$field].Type -eq "Checkbox") {
if ($_.Fields[$field].Value -eq "1") { "Checked" } else { "Unchecked" }
}
elseif ($_.Fields[$field].Type -eq "Radio") {
if ($_.Fields[$field].Value -ne $null) { "Selected" } else { "Not Selected" }
}
else {
$_.Fields[$field].Value
}
}
},
@{Name = "Updated Value"; Expression = { "" } }
$results += $items
}
}
return $results | Show-ListView
}
How it Works
- The function iterates through selected nodes and fields.
- It traverses all descendants using GetDescendants() and filters items based on selected templates.
- It reads and formats field values, handling different types like: DateTime, Checkbox, Radio & general text fields.
- The result includes an empty "Updated Value" column this will be used in the next phase to update content.

Conclusion
This utility gives content teams a quick way to extract and update field data in bulk, all through a friendly UI without touching the Sitecore backend manually.
In the next part of this blog, I’ll show how we can bulk update these values using the filled Excel file.
Stay tuned!
Please find complete script at below location