title | titleSuffix | ms.date | ms.subservice | ms.service | ms.topic | ms.assetid | author | ms.author | manager | ms.localizationpriority | ms.collection | description | ms.reviewer |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Release a Lock on a SEDO-Enabled Object |
Configuration Manager |
09/20/2016 |
sdk |
configuration-manager |
how-to |
064a7248-6a42-4dbc-b937-9be7e3454cd4 |
Banreet |
banreetkaur |
apoorvseth |
low |
tier3 |
Learn about how to release a locked SEDO-enabled object using its object path by creating a ReleaseLock method. |
mstewart,aaroncz |
-
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 theRequestState
andLockState
properties to get more information on the success or failure of the request.
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);
}
}
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 current site of the requested lock. |
AssignedTimeUTC | Indicates the time at which the requested lock was assigned. |
RequestState
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 |
LockState
The table below displays the possible lock state values.
LockStateID | LockStateName |
---|---|
0 | Unassigned |
1 | Assigned |
2 | Requested |
3 | PendingAssignment |
4 | TimedOut |
5 | NotFound |
The C# example requires:
System
System.Management
For more information about error handling, see About Configuration Manager Errors.