如何获取SEDO-Enabled对象的锁
获取已启用 SEDO 的对象上的显式锁
创建 WMI 类的
SMS_ObjectLock
实例获取方法的方法参数对象
RequestLock
。将要锁定的对象的对象路径分配给
ObjectRelPath
属性。将
RequestTransfer
属性设置为true
。创建
InvokeMethodOptions
对象实例。 在 Context 属性上,添加名称/值对。 名称必须是“ObjectLockContext”,值必须是唯一值,例如 Guid。 使用“MachineName”和请求锁定的计算机名称添加另一个名称/值对。对
SMS_ObjectLock
实例调用 InvokeMethod。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 | 未知 |
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错误。