Jak zwolnić blokadę obiektu SEDO-Enabled

Aby zwolnić jawną blokadę obiektu z włączoną funkcją SEDO

  1. Tworzenie wystąpienia SMS_ObjectLock klasy WMI

  2. Pobierz obiekt parametrów metody dla ReleaseLock metody .

  3. Przypisz ścieżkę obiektu, który chcesz odblokować do ObjectRelPath właściwości .

  4. Utwórz wystąpienie obiektu InvokeMethodOptions . We właściwości Kontekst dodaj parę nazwa/wartość. Nazwa musi być "MachineName", a wartość musi być nazwą komputera zwalniającego blokadę. Aby uzyskać więcej informacji, zobacz How to Acquire a Lock on a SEDO-Enabled Object (Jak uzyskać blokadę obiektu SEDO-Enabled)

  5. Wywołaj metodę InvokeMethod w wystąpieniuSMS_ObjectLock.

  6. InvokeMethod zwróci wystąpienieSMS_ObjectLockRequest. Sprawdź właściwości iLockState, RequestState aby uzyskać więcej informacji na temat powodzenia lub niepowodzenia żądania.

Przykład

Poniższy przykład zwalnia blokadę wystąpienia obiektu SMS_ConfigurationItem .

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

    }  
}  

Obiekt SMS_ObjectLockRequest zawiera następujące właściwości:

Właściwość Opis
Requestid Unikatowy identyfikator żądania.
ObjectRelPath Ścieżka obiektu, dla którego jest żądana blokada.
RequestState Wskazuje powodzenie lub niepowodzenie żądania.
LockState Wskazuje bieżący stan żądanej blokady.
AssignedUser Wskazuje aktualnie przypisanego użytkownika żądanej blokady.
AssignedObjectLockContext Wskazuje objectlockcontext blokady jest obecnie przypisany do.
AssignedMachine Wskazuje aktualnie przypisany komputer żądanej blokady.
AssignedSiteCode Wskazuje bieżącą witrynę żądanej blokady.
AssignedTimeUTC Wskazuje czas przypisania żądanej blokady.

RequestState
W poniższej tabeli przedstawiono możliwe wartości stanu żądania. Stany żądania Granted, GrantedAfterTimeout i GrantedLockWasOrphaned wskazują pomyślne żądanie, a użytkownik może następnie wprowadzić i zapisać modyfikacje obiektu. Wszystkie inne żądania wskazują błąd.

RequestStateID RequestStateName
0 Unknown
2 Zlecone
3 RequestedCanceled
4 OdpowiedźReceived
10 Przyznane
11 GrantedAfterTimeout
12 GrantedLockWasOrphaned
20 DeniedLockAlreadyAssigned
21 DeniedInvalidObjectVersion
22 DeniedLockNotFound
23 DeniedLockNotLocal
24 DeniedRequestTimedOut
50 Error
52 ErrorRequestNotFound
53 ErrorRequestTimedOut

LockState
W poniższej tabeli przedstawiono możliwe wartości stanu blokady.

LockStateID LockStateName
0 Nieprzypisane
1 Przypisane
2 Zlecone
3 PendingAssignment
4 Limit czasu
5 Notfound

Kompilowanie kodu

Przykład języka C# wymaga:

Obszary nazw

System

System.Management

Zestawu

Niezawodne programowanie

Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.

Zobacz też

Configuration Manager SEDO