Jak zwolnić blokadę obiektu SEDO-Enabled
Aby zwolnić jawną blokadę obiektu z włączoną funkcją SEDO
Tworzenie wystąpienia
SMS_ObjectLock
klasy WMIPobierz obiekt parametrów metody dla
ReleaseLock
metody .Przypisz ścieżkę obiektu, który chcesz odblokować do
ObjectRelPath
właściwości .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)Wywołaj metodę InvokeMethod w wystąpieniu
SMS_ObjectLock
.InvokeMethod zwróci wystąpienie
SMS_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.