Although it’s simple but it’s a little bit tricky. Adding / removing an event receiver to a list and content type is the same you just need to use the appropriate collection is an SPWeb object.
Here is how to add / remove an event receiver to / from a list:
# The following code registers an event receiver for when an item is being added to a list $web = Get-SPWeb "http://yourwebsiteurl" $list = $web.Lists["your list name"] $list.EventReceivers.Add("ItemAdding", "Full Assembly Name", "Full.Class.Name")
Removing an event receiver is as easy as:
# Be careful about the index value for when you have more than one event receiver! $list.EventReceiver[0].Delete()
As you can see below adding an event receiver to a content type is very similar:
# The following code registers an event receiver for when an item is being added to a list $web = Get-SPWeb "http://yourwebsiteurl" $ctype = $web.ContentTypes["your content type name"] $ctype.EventReceivers.Add("ItemAdding", "Full Assembly Name", "Full.Class.Name")
And so is deleting it:
# Be careful about the index value for when you have more than one event receiver! $ctype.EventReceiver[0].Delete()
Now more important is the tricky part. If you have used this content type to create other / list instances then you should also call the following command to propagate the change:
$ctype.Update($true)
This is very useful. I stumbled on your site while looking for information on adding content types to lists. – Thanks!
what if you want to delete one event receiver and your not sure its index value?
When using EventReceivers collection you can use both an integer if you know the order or you can use the GUID of the event receiver definition.