如何取得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_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 授予
11 GrantedAfterTimeout
12 GrantedLockWasOrphaned
20 DeniedLockAlreadyAssigned
21 DeniedInvalidObjectVersion
22 DeniedLockNotFound
23 DeniedLockNotLocal
24 DeniedRequestTimedOut
50 錯誤
52 ErrorRequestNotFound
53 ErrorRequestTimedOut

LockState
下表顯示可能的鎖定狀態值。

LockStateID LockStateName
0 未指派
1 指定
2 已要求
3 PendingAssignment
4 TimedOut
5 NotFound

正在編譯程式碼

C# 範例需要:

命名空間

系統

System.Management

組件

健全的程式設計

如需錯誤處理的詳細資訊,請參閱關於Configuration Manager錯誤

另請參閱

Configuration Manager SEDO