Thursday, January 3, 2019

Delete attached event receiver in sharePoint online list using Powershell

#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Users\sureshkumar.d\Desktop\PS Scripts\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Users\sureshkumar.d\Desktop\ PS Scripts\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Users\sureshkumar.d\Desktop\CFR PS Scripts\Microsoft.SharePoint.Client.DocumentManagement.dll"

$siteUrl = "Sharepoint site URL"
$libraryName = "FilenameFix"

$AdminUsername = "******@***********.onmicrosoft.com" #Read-Host -Prompt "Enter Admin User Name: "
$AdminPassword = "********" #Read-Host -Prompt "Enter Password: " -AsSecureString
$password = ConvertTo-SecureString $AdminPassword -AsPlainText -Force
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($AdminUsername, $password)

$srcContext = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
$srcContext.Credentials = $credentials
$srcContext.RequestTimeout = 100000 * 60 * 60;
$srcContext.PendingRequest.RequestExecutor.RequestKeepAlive = $true

$srcWeb = $srcContext.Web
$srcContext.Load($srcWeb)
$list = $srcWeb.Lists.GetByTitle($libraryName)
$srcContext.Load($list)
$srcContext.ExecuteQuery()

Write-Host $srcWeb.Title $srcWeb.Url $list.Title $list.Url

$srcWeb.DeleteObject()
$srcContext.Dispose()


function deleteListItemRemoteEventReceiver([Microsoft.SharePoint.Client.ClientContext]$context, [string]$listName, [string]$receiverName)
{
    Write-Host "Attempting to delete RER with name '$receiverName' on list '$listName'"



    $list = $context.Web.Lists.GetByTitle($listName)
    $context.Load($list)
    $eventReceivers = $list.EventReceivers
    $context.Load($eventReceivers)
    $context.ExecuteQuery()

    Write-Host $eventReceivers.Count

    $specifiedEr = $null
    try
    {
        foreach ($er in $eventReceivers)
        {
            if ($er.ReceiverName -eq $receiverName)
            {
                $specifiedEr = $er
            }
                if ($specifiedEr -ne $null -and !$specifiedEr.ServerObjectIsNull.Value)
               {
                    $specifiedEr.DeleteObject()
                    $context.ExecuteQuery()
                    Write-Host "Receiver deleted successfully"
                    break;
                }
                else
                {
                    Write-Error "Failed to find receiver with name '$receiverName'"
                }
        }

       
    }
    catch
    {
        Write-Error "Failed to delete receiver - error:  $_"
    }
}


$receiverName = "FixReRItemAdded"
# now call function..
deleteListItemRemoteEventReceiver $srcContext $libraryName $receiverName

No comments:

Post a Comment