Powershell Script to Edit a List Item and Set the Value for Field

The powershell script does the following functionalities, 
  1. Loops through all the lists in the given site collection.

  2. Filters the list based on document library.

  3. Finds the specific/given list given in the script.

  4. Loops through all the items in the given list.

  5. Searches for a current value in one of the column for the list.

  6. It replaces/sets the value for the column with the given new value only if it satisfies the given criteria. 

#Loops through each items in the given list and locates the column name "ColumnName" and checks whether the value for that field is "Test", if so it replaces it with #"Test1" and updates the item and updates the list.

  1. $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm  
  2. $LogFile = ".\EditListItemPatch-$LogTime.rtf"  
  3.  
  4. # Add SharePoint PowerShell Snapin  
  5.   
  6.   
  7. if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) {  
  8.     Add-PSSnapin Microsoft.SharePoint.Powershell  
  9. }  
  10.   
  11. $scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent  
  12. Set-Location $scriptBase  
  13.  
  14.  
  15. #Deleting any .rtf files in the scriptbase location  
  16. $FindRTFFile = Get-ChildItem $scriptBase\*.* -include *.rtf  
  17. if($FindRTFFile)  
  18. {  
  19.  foreach($file in $FindRTFFile)  
  20.   {  
  21.    remove-item $file  
  22.   }  
  23. }  
  24.   
  25.   
  26. start-transcript $logfile  
  27.   
  28. $siteURL = read-host "Enter the site collection URL "  
  29. $sitecollection = get-spsite $siteURL  
  30. foreach($web in $sitecollection.allwebs)  
  31. {  
  32.  write-host $web.url -fore yellow  
  33.  $lists = $web.lists  
  34.  foreach ($list1 in @($lists))  
  35.  {  
  36.   if ($list1.BaseType -eq [Microsoft.SharePoint.SPBaseType]::DocumentLibrary)  
  37.   {  
  38.    $list = $web.Lists[$list1.title]  
  39.   
  40.   
  41.    if($list.title -eq "TestList")  
  42.    {  
  43.     write-host $list.title -fore green  
  44.     $items = $List.items  
  45.   
  46.     foreach($item in @($items))  
  47.     {  
  48.      ##########Put in your logic here###########################  
  49.      $value = $item["ColumnName"]  
  50.      write-host $value  
  51.   
  52.      if($value -eq "Test")  
  53.      {  
  54.       $NewValue = "Test1"  
  55.       $item["ColumnName"] = $NewValue  
  56.   
  57.      }  
  58.      ##########Put in your logic here###########################  
  59.      $item.update()  
  60.     }  
  61.     $list.update()  
  62.    }  
  63.   }  
  64.  }  
  65. }  
  66.   
  67. stop-transcript