Получение блокировки объекта SEDO-Enabled
Получение явной блокировки объекта с поддержкой SEDO
Создание экземпляра
SMS_ObjectLock
класса WMIПолучите объект параметров метода для
RequestLock
метода .Назначьте путь к объекту, который требуется заблокировать для
ObjectRelPath
свойства .Задайте для
RequestTransfer
свойства значениеtrue
.Создание экземпляра
InvokeMethodOptions
объекта. В свойстве Context добавьте пару "имя-значение". Имя должно быть "ObjectLockContext", а значение должно быть уникальным, например Guid. Добавьте другую пару "имя-значение" с параметром MachineName и именем компьютера, запрашивающего блокировку.Вызовите Метод InvokeMethod для экземпляра
SMS_ObjectLock
.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.