如何获取SEDO-Enabled对象的锁

获取已启用 SEDO 的对象上的显式锁

  1. 创建 WMI 类的 SMS_ObjectLock 实例

  2. 获取方法的方法参数对象 RequestLock

  3. 将要锁定的对象的对象路径分配给 ObjectRelPath 属性。

  4. RequestTransfer 属性设置为 true

  5. 创建 InvokeMethodOptions 对象实例。 在 Context 属性上,添加名称/值对。 名称必须是“ObjectLockContext”,值必须是唯一值,例如 Guid。 使用“MachineName”和请求锁定的计算机名称添加另一个名称/值对。

  6. SMS_ObjectLock实例调用 InvokeMethod

  7. InvokeMethod 将返回实例 SMS_ObjectLockRequestRequestState检查 和 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 未知
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错误

另请参阅

Configuration Manager SEDO