# Initialize the SharePoint PowerShell environment
Add-PSSnapIn "Microsoft.SharePoint.Powershell"
-ErrorAction:SilentlyContinue
# Function to perform add , delete , view and update operation on list item properties
# Parameters :
# -- ItemBagKey : Name of property of list item
# -- Operation : Type of operation  "ADD" , "UPDATE" , "DELETE" , "VIEW"
# -- NewValue : Value for the item property 
# -- Item : List item to operate upon 
 
Function UpdateKey{
      param([string]$ItemBagKey,[string]$Operation,[string]$NewValue,[Microsoft.SharePoint.SPListItem]$item)
      if($Operation -eq "ADD") # If we are adding property to item.
      {
            if($item.Properties.ContainsKey($ItemBagKey))
            {
                  Write-Host
"Key
already found in item bag." -ForegroundColor Yellow;
                  $item.Properties[$ItemBagKey] = $NewValue;
                  $item.SystemUpdate($false);
                  Write-Host
"Key
update with new value : "  $NewValue - ForegroundColor
Green;
            }
            else
            {
                  Write-Host
"Key
not found in item bag." -ForegroundColor Yellow;
                  $item.Properties.Add($ItemBagKey,$NewValue);
                  $item.SystemUpdate($false);
                  Write-Host
"Key
added with value : "  $NewValue
-ForegroundColor Green;
            }
      }
      elseif($Operation -eq "DELETE") # If we are deleting property from item.
      {
            if($item.Properties.ContainsKey($ItemBagKey))
            {
                  $item.Properties.Remove($ItemBagKey);
                  $item.SystemUpdate($false);
                  Write-Host
"Key
removed from item bag : "  $ItemBagKey
-ForegroundColor Green;
            }
            else
            {
                  Write-Host
"Key
not found in item bag to remove." -ForegroundColor Red;
            }
      }
      elseif($Operation -eq "UPDATE") # If we are updating property of item.
      {
            if($item.Properties.ContainsKey($ItemBagKey))
            {
                  $item.Properties[$ItemBagKey] = $NewValue;
                  $item.SystemUpdate($false);
                  Write-Host
"Key
updated with new value : "  $NewValue
-ForegroundColor Green;
            }
            else
            {
                  Write-Host
"Key
not found in item bag." -ForegroundColor Red;
            }
      }
      elseif($Operation -eq "VIEW") # If we want to view value item property.
      {
            if($item.Properties.ContainsKey($ItemBagKey))
            {
                  Write-Host
"Property
value : "  $item.Properties[$ItemBagKey]
-ForegroundColor Yellow;
            }
            else
            {
                  Write-Host
"Key
not found in item bag." -ForegroundColor Red;
            }
      }
}
try 
{ 
      
      #Put your site URL in placeholder <siteurl> 
      $web = Get-SPWeb <siteurl>     
      #Put list name in placeholder <listname> 
      $list = $web.Lists["<listname>"] 
      #If the list is found
      if($list)
      {
  
  #Put list item id in placeholder <itemid> 
  $item = $list.GetItemById(<itemid> );
  #Put Item property key that you want to operate upon in placeholder               <propkey> 
  $_ItemBagKey = "<propkey>"
  #Replace placeholder <OP> with type of operation you want to perfrom it            could be one among four values ( ADD, UPDATE , DELETE , VIEW )
  $_Operation  = "<OP>"  # "ADD" # "UPDATE" #
"DELETE" # "VIEW"
       #Replace placeholder <propvalue> with new value that you want to update          if you want to delete or view just leave the value blank.
       $_NewValue   = "<propvalue>"
  
 #call function to perform operation
 UpdateKey $_ItemBagKey $_Operation $_NewValue $item
 #Dispose web object to release resources.
 $web.Dispose()
}
else
{
   Write-Host "List not found." -ForegroundColor Red;
}
} 
catch 
{ 
   # Add your exception handling routine here to trap and handle the exception details.
}