Поделиться через


Освобождение блокировки объекта SEDO-Enabled

Освобождение явной блокировки объекта с поддержкой SEDO

  1. Создание экземпляра SMS_ObjectLock класса WMI

  2. Получите объект параметров метода для ReleaseLock метода .

  3. Назначьте путь к объекту, который требуется разблокировать, свойству ObjectRelPath .

  4. Создание экземпляра InvokeMethodOptions объекта. В свойстве Context добавьте пару "имя-значение". Имя должно быть "MachineName", а значение должно быть именем компьютера, освобождающего блокировку. Дополнительные сведения см. в статье Получение блокировки для объекта SEDO-Enabled.

  5. Вызовите Метод InvokeMethod для экземпляраSMS_ObjectLock.

  6. InvokeMethod вернет SMS_ObjectLockRequest экземпляр. RequestState Проверьте свойства иLockState, чтобы получить дополнительные сведения об успешном или неудачном выполнении запроса.

Пример

В следующем примере происходит блокировка экземпляра SMS_ConfigurationItem объекта.

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);   

    }  
}  

Объект SMS_ObjectLockRequest содержит следующие свойства:

Свойство Описание
RequestID Уникальный идентификатор запроса.
ObjectRelPath Путь к объекту, для которого запрашивается блокировка.
RequestState Указывает на успешное выполнение или сбой запроса.
LockState Указывает текущее состояние запрошенной блокировки.
AssignedUser Указывает на назначенного в настоящее время пользователя запрошенной блокировки.
AssignedObjectLockContext Указывает objectLockContext, которому в данный момент назначена блокировка.
AssignedMachine Указывает на назначенный в данный момент компьютер запрошенной блокировки.
AssignedSiteCode Указывает текущий сайт запрошенной блокировки.
AssignedTimeUTC Указывает время назначения запрошенной блокировки.

RequestState
В таблице ниже показаны возможные значения состояния запроса. Состояния запроса Granted, GrantedAfterTimeout и GrantedLockWasOrphaned указывают на успешное выполнение запроса, и пользователь может внести и сохранить изменения в объекте . Все остальные запросы указывают на ошибку.

RequestStateID RequestStateName
0 Unknown
2 Запрошено
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
В таблице ниже показаны возможные значения состояния блокировки.

LockStateID LockStateName
0 Неназначенные
1 Назначенное
2 Запрошено
3 PendingAssignment
4 TimedOut
5 NotFound

Компиляция программы

Для примера C# требуется следующее:

Пространства имен

Системные

System.Management

Assembly

Надежное программирование

Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.

См. также

SEDO Configuration Manager