Update $name of Existing Items using PowerShell / Blogs / Perficient


Welcome to our latest blog post where we dive into the realm of PowerShell scripting to empower you with the ability to efficiently update existing items. In today’s fast-paced digital landscape, the need to manage and modify data swiftly and accurately is more crucial than ever. Whether you’re a seasoned IT professional or just starting your journey into automation, PowerShell proves to be a formidable tool.

In this guide, we’ll explore how to leverage PowerShell to seamlessly update $name of existing items. Unlock the potential to streamline your processes, enhance productivity, and maintain control over your data. Join us on this journey as we uncover the power and versatility of PowerShell scripting for effective item updates.

Problem

I have a template, and 50-page items already exist related to template type A. Now have a requirement to add one more field for template A with the default value ‘$name’ into the standard value of this template.

Now if I’m going to create any new page item related to template A then it’s working fine. But for the already existing 50-page item field added but field value is still showing ‘$name’ instead of being replaced with the page item’s name.

Following is the essential powershell parameter that we are using

Read-Variable 

Prompts the user to provide values for variables required by the script to perform its operation. If a user selects the “OK” button the command will return ‘ok’ as its value. If a user selects the “Cancel” button or closes the window with the “x” button at the top-right corner of the dialog the command will return ‘cancel’ as its value.

Read-Variable [-Parameters <Object[]>] [-Description <String>] [-CancelButtonName <String>] [-OkButtonName <String>] [-ShowHints <SwitchParameter>] [-Validator <ScriptBlock>] [-ValidatorParameters <Hashtable>] [-Title <String>] [-Icon <String>] [-Width <Int32>] [-Height <Int32>] [<CommonParameters>]

INPUTS
The input type is the type of the object that you can pipe to the cmdlet.

OUTPUTS

The output type is the type of the objects that the cmdlet emits.

Solution

You can use the PowerShell script below to update the values of your field or You can download or copy-paste the PowerShell script from this link. You have to replace Your field name with the field you need to change.

$dialog= Read-Variable -Parameters `
@{ Name = "media"; Title = "Path"; Root="/sitecore/"; Editor="item";Tab="General";},
@{ Name = "contentType"; Title = "Content Type"; Root="/sitecore/templates"; Editor="item";Tab="General";} `
-Description "This script will edit field value " `
-Title "Field Value Update" -Width 500 -Height 500 `
-OkButtonName "Proceed" -CancelButtonName "Abort"
 
if ($dialog -ne "ok")
{   
   Exit
}
 
cd $media.Paths.FullPath;
$templateId = $contentType.ID;

Write-Host "Process Starting";
 
Get-ChildItem -Recurse -Language * . |  ForEach-Object {
$this = $_
 
if($_.TemplateID -eq $templateId){     
if($_.Fields["Your field name"].Value -eq '$name')
  {
             $_.Editing.BeginEdit();
             $_['Your field name']=$_.Name;
             $_.Editing.EndEdit();
  }
 
}    
}
 
Write-Host "Process Completed";

Let’s See how it works

Update $name Of Existing Items

 

Hopefully, this will be helpful !!! Check out our Sitecore blog for more helpful tips and tricks.





Source link

Social media & sharing icons powered by UltimatelySocial
error

Enjoy Our Website? Please share :) Thank you!