Share via


Abrufen einer Sperre für ein SEDO-Enabled-Objekt

So rufen Sie eine explizite Sperre für ein SEDO-fähiges Objekt ab

  1. Erstellen einer Instanz der WMI-Klasse SMS_ObjectLock

  2. Rufen Sie das Methodenparameterobjekt für die RequestLock Methode ab.

  3. Weisen Sie den Objektpfad des Objekts zu, das Sie für die ObjectRelPath Eigenschaft sperren möchten.

  4. Legen Sie die RequestTransfer -Eigenschaft auf fest true.

  5. Erstellen Sie eine InvokeMethodOptions Objektinstanz. Fügen Sie in der Context-Eigenschaft ein Name-Wert-Paar hinzu. Der Name muss "ObjectLockContext" sein, und der Wert muss ein eindeutiger Wert sein, z. B. eine GUID. Fügen Sie ein weiteres Name-Wert-Paar mit "MachineName" und dem Namen des Computers hinzu, der die Sperre anfordert.

  6. Rufen Sie InvokeMethod für die -Instanz auf SMS_ObjectLock .

  7. InvokeMethod gibt eine SMS_ObjectLockRequest -Instanz zurück. Überprüfen Sie die RequestState Eigenschaften und LockState , um weitere Informationen zum Erfolg oder Fehler der Anforderung zu erhalten.

Beispiel

Im folgenden Beispiel wird eine explizite Sperre für eine SMS_ConfigurationItem Objektinstanz angefordert.

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

     }  
}  

Das SMS_ObjectLockRequest-Objekt enthält die folgenden Eigenschaften:

Eigenschaft Beschreibung
Requestid Eindeutiger Bezeichner der Anforderung.
ObjectRelPath Der Pfad des Objekts, für das die Sperre angefordert wird.
RequestState Gibt den Erfolg oder Fehler der Anforderung an.
LockState Gibt den aktuellen Zustand der angeforderten Sperre an.
AssignedUser Gibt den aktuell zugewiesenen Benutzer der angeforderten Sperre an.
AssignedObjectLockContext Gibt ObjectLockContext an, dem die Sperre derzeit zugewiesen ist.
AssignedMachine Gibt den aktuell zugewiesenen Computer der angeforderten Sperre an.
AssignedSiteCode Gibt den aktuellen Standort der angeforderten Sperre an.
AssignedTimeUTC Gibt den Zeitpunkt an, zu dem die angeforderte Sperre zugewiesen wurde.

RequestState
In der folgenden Tabelle werden die möglichen Anforderungszustandswerte angezeigt. Die Anforderungszustände Granted, GrantedAfterTimeout und GrantedLockWasOrphaned geben eine erfolgreiche Anforderung an, und der Benutzer kann dann Änderungen am Objekt vornehmen und speichern. Alle anderen Anforderungen weisen auf einen Fehler hin.

RequestStateID RequestStateName
0 Unbekannt
2 Angefordert
3 RequestedCanceled
4 ResponseReceived
10 Gewährt
11 GrantedAfterTimeout
12 GrantedLockWasOrphaned
20 DeniedLockAlreadyAssigned
21 DeniedInvalidObjectVersion
22 DeniedLockNotFound
23 DeniedLockNotLocal
24 DeniedRequestTimedOut
50 Fehler
52 ErrorRequestNotFound
53 ErrorRequestTimedOut

LockState
In der folgenden Tabelle werden die möglichen Werte für den Sperrzustand angezeigt.

LockStateID LockStateName
0 Nicht zugewiesen
1 Zugewiesen
2 Angefordert
3 PendingAssignment
4 Timedout
5 NotFound

Kompilieren des Codes

Für das C#-Beispiel ist Folgendes erforderlich:

Namespaces

System

System.Management

Assembly

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

Siehe auch

Configuration Manager SEDO