Share via


Een vergrendeling op een SEDO-Enabled-object verkrijgen

Een expliciete vergrendeling verkrijgen voor een SEDO-object

  1. Een exemplaar van de SMS_ObjectLock WMI-klasse maken

  2. Haal het parameterobject voor de RequestLock methode op.

  3. Wijs het objectpad toe van het object dat u wilt vergrendelen aan de ObjectRelPath eigenschap.

  4. Stel de RequestTransfer eigenschap in op true.

  5. Een objectexemplaren InvokeMethodOptions maken. Voeg bij de eigenschap Context een naam/waardepaar toe. De naam moet 'ObjectLockContext' zijn en de waarde moet een unieke waarde zijn, zoals een GUID. Voeg nog een naam/waardepaar toe met 'MachineName' en de naam van de computer die de vergrendeling aanvraagt.

  6. Roep InvokeMethod aan op het SMS_ObjectLock exemplaar.

  7. InvokeMethod retourneert een SMS_ObjectLockRequest exemplaar. Controleer de RequestState eigenschappen en LockState voor meer informatie over het slagen of mislukken van de aanvraag.

Voorbeeld

In het volgende voorbeeld wordt een expliciete vergrendeling van een SMS_ConfigurationItem objectexemplaren aangevraagd.

 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);     

     }  
}  

Het object SMS_ObjectLockRequest bevat de volgende eigenschappen:

Eigenschap Omschrijving
RequestID Unieke id van de aanvraag.
ObjectRelPath Het pad van het object waarvoor de vergrendeling is aangevraagd.
RequestState Geeft het slagen of mislukken van de aanvraag aan.
LockState Geeft de huidige status van de aangevraagde vergrendeling aan.
AssignedUser Geeft de momenteel toegewezen gebruiker van de aangevraagde vergrendeling aan.
AssignedObjectLockContext Geeft ObjectLockContext aan waaraan de vergrendeling momenteel is toegewezen.
AssignedMachine Geeft de momenteel toegewezen computer van de aangevraagde vergrendeling aan.
AssignedSiteCode Geeft de huidige locatie van de aangevraagde vergrendeling aan.
AssignedTimeUTC Geeft het tijdstip aan waarop de aangevraagde vergrendeling is toegewezen.

RequestState
In de onderstaande tabel worden de mogelijke aanvraagstatuswaarden weergegeven. Aanvraagstatussen Verleend, GrantedAfterTimeout en GrantedLockWasOrphaned geven een geslaagde aanvraag aan en de gebruiker kan vervolgens wijzigingen aanbrengen en opslaan in het object. Alle andere aanvragen geven een fout aan.

RequestStateID RequestStateName
0 Unknown
2 Aangevraagd
3 RequestedCanceled
4 ResponseReceived
10 Verleend
11 GrantedAfterTimeout
12 GrantedLockWasOrphaned
20 DeniedLockAlreadyAssigned
21 DeniedInvalidObjectVersion
22 DeniedLockNotFound
23 DeniedLockNotLocal
24 DeniedRequestTimedOut
50 Error
52 ErrorRequestNotFound
53 ErrorRequestTimedOut

LockState
In de onderstaande tabel worden de mogelijke waarden voor de vergrendelingsstatus weergegeven.

LockStateID LockStateName
0 Toegewezen
1 Toegewezen
2 Aangevraagd
3 In behandelingToewijzing
4 Timed-out
5 NotFound

De code compileren

Voor het C#-voorbeeld is het volgende vereist:

Naamruimten

Systeem

System.Management

Vergadering

Robuust programmeren

Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.

Zie ook

Configuration Manager SEDO