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


Получение блокировки объекта SEDO-Enabled

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

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

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

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

  4. Задайте для RequestTransfer свойства значение true.

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

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

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

Пример

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

 class Program  
 {  
     static void Main(string[] args)   
     {  
         ManagementScope scope = new ManagementScope(@"\\siteservername\root\sms\site_ABC");  
         RequestLock(scope);   
     }  

     public static void RequestLock(ManagementScope scope)   
     {  
         ManagementPath path = new ManagementPath("SMS_ObjectLock");  
         ManagementClass objectLock = new ManagementClass(scope, path, null);   

         ManagementBaseObject inParams = objectLock.GetMethodParameters("RequestLock");  
         inParams["ObjectRelPath"] = "SMS_ConfigurationItem.CI_ID=30";  
         inParams["RequestTransfer"] = true;   

         InvokeMethodOptions options = new InvokeMethodOptions();  
         options.Context.Add("ObjectLockContext", Guid.NewGuid().ToString());  
         options.Context.Add("MachineName", "RequestingComputer");  

         ManagementBaseObject result = objectLock.InvokeMethod("RequestLock", 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