Sdílet prostřednictvím


Jak získat zámek u objektu SEDO-Enabled

Získání explicitního zámku objektu s povolenou funkcí SEDO

  1. Vytvoření instance SMS_ObjectLock třídy služby WMI

  2. Získejte objekt parametrů metody pro metodu RequestLock .

  3. Přiřaďte k vlastnosti cestu k objektu ObjectRelPath , který chcete uzamknout.

  4. Nastavte RequestTransfer vlastnost na true.

  5. Vytvořte instanci objektu InvokeMethodOptions . Do vlastnosti Context přidejte dvojici název/hodnota. Název musí být "ObjectLockContext" a hodnota musí být jedinečná hodnota, jako je identifikátor GUID. Přidejte další pár název/hodnota s názvem MachineName a názvem počítače, který požaduje zámek.

  6. Volání InvokeMethod v SMS_ObjectLock instanci.

  7. InvokeMethod vrátí SMS_ObjectLockRequest instanci. RequestState Zkontrolujte vlastnosti a a LockState a získejte další informace o úspěchu nebo selhání požadavku.

Příklad

Následující příklad vyžaduje explicitní zámek instance objektu 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);     

     }  
}  

Objekt SMS_ObjectLockRequest obsahuje následující vlastnosti:

Vlastnost Popis
Requestid Jedinečný identifikátor požadavku.
ObjectRelPath Cesta k objektu, pro který je požadován zámek.
RequestState Označuje úspěch nebo selhání požadavku.
LockState Označuje aktuální stav požadovaného zámku.
Přiřazený uživatel Označuje aktuálně přiřazeného uživatele požadovaného zámku.
AssignedObjectLockContext Označuje ObjectLockContext, ke kterému je zámek aktuálně přiřazen.
AssignedMachine Označuje aktuálně přiřazený počítač požadovaného zámku.
Přiřazený kód lokality Označuje aktuální web požadovaného zámku.
AssignedTimeUTC Označuje čas, kdy byl požadovaný zámek přiřazen.

RequestState
Následující tabulka zobrazuje možné hodnoty stavu požadavku. Stavy žádosti Uděleno, GrantedAfterTimeout a GrantedLockWasOrphaned označují úspěšný požadavek a uživatel pak může provést a uložit změny objektu. Všechny ostatní požadavky značí chybu.

RequestStateID RequestStateName
0 Unknown (neznámý)
2 Požadováno
3 RequestedCanceled
4 ResponseReceived
10 Poskytnuta
11 GrantedAfterTimeout
12 GrantedLockWasOrphaned
20 DeniedLockAlreadyAssigned
21 DeniedInvalidObjectVersion
22 DeniedLockNotFound
23 DeniedLockNotLocal
24 DeniedRequestTimedOut
50 Error
52 ChybaRequestNotFound
53 ErrorRequestTimedOut

LockState
Následující tabulka zobrazuje možné hodnoty stavu zámku.

LockStateID LockStateName
0 Nepřiřazené
1 Přiřazen
2 Požadováno
3 PendingAssignment
4 Timedout
5 Nenalezeno

Kompilace kódu

Příklad jazyka C# vyžaduje:

Obory názvů

Systému

System.management

Sestavení

Robustní programování

Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.

Viz taky

Configuration Manager SEDO