Configuration Manager SEDO (Serialized Editing of Distributed Objects) in the System Center 2012 Configuration Manager SDK provides a mechanism for assigning and unassigning locks to globally replicated SDK provider objects in the context of a site, machine and user. SEDO-enabled objects are globally replicated SDK provider objects that require the user to obtain a lock if that user wishes to edit and save that object. When the user obtains that lock, the lock will be assigned to that user, the user’s machine and the site in which the machine resides. While that lock is assigned, no other user or machine will be able to edit that object until the user releases the lock.
Only SEDO-enabled objects require users to obtain a lock before editing them. The SEDO-enabled objects are the following:
-
SMS_Application
-
SMS_AuthorizationList
-
SMS_BootImagePackage
-
SMS_ConfigurationBaselineInfo
-
SMS_ConfigurationItem
-
SMS_DeploymentType
-
SMS_Driver
-
SMS_DriverPackage
-
SMS_GlobalCondition
-
SMS_ImagePackage
-
SMS_OperatingSystemInstallPackage
-
SMS_Package
-
SMS_SoftwareUpdatesPackage
-
SMS_TaskSequencePackage
How-To Acquire an Explicit Lock on a SEDO-enabled Object
If you want to lock a SEDO based object, then you first need to create an instance of the SMS_ObjectLock WMI class and before you can invoke the RequestLock method you need to create System.Management.InvokeMethodOptions object and set two parameters.


How-To Release a Lock on a SEDO-Enabled Object
To release a lock on a SEDO based object is almost the same as locking the object, but before releasing the object you need to query Object AssignedObjectLockContext property.
Scripts
You can download this script from here. CM12_Object_Locks.ps1 file contains three functions:
-
Enable-CMObjectLock – this function currently only locks applications but you can easily modify/extend it.
-
Get-CMObjectLock – this function queris application AssignedObjectLockContext property
-
Disable-CMObjectLock – this function releases the lock on object
Examples
Enable-CMObjectLock -SiteCode TRT -SiteServer localhost -ApplicationName DotNet
Get-CMObjectLockNumber -sitecode trt -siteserver localhost -applicationname DotNet
Disable-CMObjectLock -SiteCode TRT -SiteServer localhost -ApplicationName DotNet -ObjectLockNumber "95adfc57-9faa-472a-9151-68c2e696c024"