How to Release a Lock on a SEDO-Enabled Object
Updated: November 1, 2013
Applies To: System Center 2012 Configuration Manager, System Center 2012 Configuration Manager SP1, System Center 2012 R2 Configuration Manager
To Release an Explicit Lock on a SEDO-enabled Object
Create an instance of the SMS_ObjectLock WMI class
Get the method parameters object for the ReleaseLock method.
Assign the object path of the object you wish to unlock to the ObjectRelPath property.
Create an InvokeMethodOptions object instance. On the Context property, add a name/value pair. The name must be “MachineName” and the value must be name of the computer releasing the lock. For more information, see How to Acquire a Lock on a SEDO-Enabled Object
Call InvokeMethod on the SMS_ObjectLock instance.
InvokeMethod will return a SMS_ObjectLockRequest instance. Check the RequestState and LockState properties to get more information on the success or failure of the request.
Example
The following example releases a lock on a SMS_ConfigurationItem object instance.
class Program
{
static void Main(string[] args)
{
ManagementScope scope = new ManagementScope(@"\siteservername\root\sms\site_ABC");
ReleaseLock(scope);
}
public static void ReleaseLock(ManagementScope scope)
{
ManagementPath path = new ManagementPath("SMS_ObjectLock");
ManagementClass objectLock = new ManagementClass(scope, path, null);
ManagementBaseObject inParams = objectLock.GetMethodParameters("ReleaseLock");
inParams["ObjectRelPath"] = "SMS_ConfigurationItem.CI_ID=30";
InvokeMethodOptions options = new InvokeMethodOptions();
options.Context.Add("MachineName", "RequestingComputer");
ManagementBaseObject result = objectLock.InvokeMethod("ReleaseLock", inParams, options);
}
}
Robust Programming
For more information about error handling, see About Configuration Manager Errors.
The SMS_ObjectLockRequest object contains the following properties:
Property
Description
RequestID
Unique identifier of the request.
ObjectRelPath
The path of the object for which the lock is requested.
RequestState
Indicates the success or failure of the request.
LockState
Indicates the current state of the requested lock.
AssignedUser
Indicates the currently assigned user of the requested lock.
AssignedObjectLockContext
Indicates ObjectLockContext the lock is currently assigned to.
AssignedMachine
Indicates the currently assigned computer of the requested lock.
AssignedSiteCode
Indicates the currently site of the requested lock.
AssignedTimeUTC
Indicates the time at which the requested lock was assigned.
The table below displays the possible request state values. Request states Granted, GrantedAfterTimeout and GrantedLockWasOrphaned indicate a successful request and the user can then make and save modifications to the object. All other requests indicate error.
RequestStateID
RequestStateName
0
Unknown
2
Requested
3
RequestedCanceled
4
ResponseReceived
10
Granted
11
GrantedAfterTimeout
12
GrantedLockWasOrphaned
20
DeniedLockAlreadyAssigned
21
DeniedInvalidObjectVersion
22
DeniedLockNotFound
23
DeniedLockNotLocal
24
DeniedRequestTimedOut
50
Error
52
ErrorRequestNotFound
53
ErrorRequestTimedOut
The table below displays the possible lock state values.
LockStateID
LockStateName
0
Unassigned
1
Assigned
2
Requested
3
PendingAssignment
4
TimedOut
5
NotFound