Aufheben einer Sperre für ein SEDO-Enabled Objekt

So heben Sie eine explizite Sperre für ein SEDO-fähiges Objekt auf

  1. Erstellen einer Instance der SMS_ObjectLock WMI-Klasse

  2. Rufen Sie das Parameterobjekt der Methode für die ReleaseLock Methode ab.

  3. Weisen Sie den Objektpfad des Objekts, das Sie entsperren möchten, der ObjectRelPath Eigenschaft zu.

  4. Erstellen Sie eine InvokeMethodOptions Objekt-instance. Fügen Sie in der Context-Eigenschaft ein Name/Wert-Paar hinzu. Der Name muss "MachineName" sein und der Wert muss der Name des Computers sein, der die Sperre aufhebt. Weitere Informationen finden Sie unter Erwerben einer Sperre für ein SEDO-Enabled Objekt

  5. Rufen Sie InvokeMethod für die SMS_ObjectLock Instance auf.

  6. InvokeMethod gibt eine SMS_ObjectLockRequest Instance zurück. Überprüfen Sie die RequestStateLockState und-Eigenschaften, um weitere Informationen über den Erfolg oder Misserfolg der Anforderung zu erhalten.

Beispiel

Das folgende Beispiel hebt eine Sperre für eine SMS_ConfigurationItem Object instance auf.

class Program
{
    static void Main(string[] args)
    {
        ManagementScope scope = new ManagementScope(@"\siteservername\root\sms\site_ABC");
        ReleaseLock(scope);
    }

    public static void ReleaseLock(ManagementScope scope)
    {
        ManagementPath path = new ManagementPath("SMS_ObjectLock");
        ManagementClass objectLock = new ManagementClass(scope, path, null);

        ManagementBaseObject inParams = objectLock.GetMethodParameters("ReleaseLock");
        inParams["ObjectRelPath"] = "SMS_ConfigurationItem.CI_ID=30";

        InvokeMethodOptions options = new InvokeMethodOptions();
        options.Context.Add("MachineName", "RequestingComputer");

        ManagementBaseObject result = objectLock.InvokeMethod("ReleaseLock", inParams, options);

    }
}

Das SMS_ObjectLockRequest-Objekt enthält die folgenden Eigenschaften:

Eigenschaft Beschreibung
Anforderungs-ID Eindeutiger Bezeichner der Anforderung.
ObjectRelPath Der Pfad des Objekts, für das die Sperre angefordert wird.
RequestState Gibt den Erfolg oder Misserfolg der Anforderung an.
LockState Gibt den aktuellen Status der angeforderten Sperre an.
Zugewiesener Benutzer 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 die aktuelle Site 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" weisen auf eine erfolgreiche Anforderung hin, 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 Sperrzustandswerte angezeigt.

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

Kompilieren des Codes

Das C#-Beispiel erfordert:

Namespaces

System

System.Management

Assembly

Robuste Programmierung

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

Siehe auch

Configuration Manager SEDO