Jak uzyskać blokadę obiektu SEDO-Enabled
Aby uzyskać jawną blokadę obiektu z włączoną funkcją SEDO
Tworzenie wystąpienia
SMS_ObjectLock
klasy WMIPobierz obiekt parametrów metody dla
RequestLock
metody .Przypisz ścieżkę obiektu, który chcesz zablokować do
ObjectRelPath
właściwości.Ustaw właściwość
RequestTransfer
natrue
.Utwórz wystąpienie obiektu
InvokeMethodOptions
. We właściwości Kontekst dodaj parę nazwa/wartość. Nazwa musi być "ObjectLockContext", a wartość musi być unikatową wartością, taką jak identyfikator Guid. Dodaj inną parę nazw/wartości z ciągiem "MachineName" i nazwą komputera żądającego blokady.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 żąda jawnej blokady wystąpienia obiektu SMS_ConfigurationItem
.
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);
}
}
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 obecnie lokację żą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.