Jak získat zámek u objektu SEDO-Enabled
Získání explicitního zámku objektu s povolenou funkcí SEDO
Vytvoření instance
SMS_ObjectLock
třídy služby WMIZískejte objekt parametrů metody pro metodu
RequestLock
.Přiřaďte k vlastnosti cestu k objektu
ObjectRelPath
, který chcete uzamknout.Nastavte
RequestTransfer
vlastnost natrue
.Vytvořte instanci objektu
InvokeMethodOptions
. Do vlastnosti Context přidejte dvojici název/hodnota. Název musí být "ObjectLockContext" a hodnota musí být jedinečná hodnota, jako je identifikátor GUID. Přidejte další pár název/hodnota s názvem MachineName a názvem počítače, který požaduje zámek.Volání InvokeMethod v
SMS_ObjectLock
instanci.InvokeMethod vrátí
SMS_ObjectLockRequest
instanci.RequestState
Zkontrolujte vlastnosti a aLockState
a získejte další informace o úspěchu nebo selhání požadavku.
Příklad
Následující příklad vyžaduje explicitní zámek instance objektu 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);
}
}
Objekt SMS_ObjectLockRequest obsahuje následující vlastnosti:
Vlastnost | Popis |
---|---|
Requestid | Jedinečný identifikátor požadavku. |
ObjectRelPath | Cesta k objektu, pro který je požadován zámek. |
RequestState | Označuje úspěch nebo selhání požadavku. |
LockState | Označuje aktuální stav požadovaného zámku. |
Přiřazený uživatel | Označuje aktuálně přiřazeného uživatele požadovaného zámku. |
AssignedObjectLockContext | Označuje ObjectLockContext, ke kterému je zámek aktuálně přiřazen. |
AssignedMachine | Označuje aktuálně přiřazený počítač požadovaného zámku. |
Přiřazený kód lokality | Označuje aktuální web požadovaného zámku. |
AssignedTimeUTC | Označuje čas, kdy byl požadovaný zámek přiřazen. |
RequestState
Následující tabulka zobrazuje možné hodnoty stavu požadavku. Stavy žádosti Uděleno, GrantedAfterTimeout a GrantedLockWasOrphaned označují úspěšný požadavek a uživatel pak může provést a uložit změny objektu. Všechny ostatní požadavky značí chybu.
RequestStateID | RequestStateName |
---|---|
0 | Unknown (neznámý) |
2 | Požadováno |
3 | RequestedCanceled |
4 | ResponseReceived |
10 | Poskytnuta |
11 | GrantedAfterTimeout |
12 | GrantedLockWasOrphaned |
20 | DeniedLockAlreadyAssigned |
21 | DeniedInvalidObjectVersion |
22 | DeniedLockNotFound |
23 | DeniedLockNotLocal |
24 | DeniedRequestTimedOut |
50 | Error |
52 | ChybaRequestNotFound |
53 | ErrorRequestTimedOut |
LockState
Následující tabulka zobrazuje možné hodnoty stavu zámku.
LockStateID | LockStateName |
---|---|
0 | Nepřiřazené |
1 | Přiřazen |
2 | Požadováno |
3 | PendingAssignment |
4 | Timedout |
5 | Nenalezeno |
Kompilace kódu
Příklad jazyka C# vyžaduje:
Obory názvů
Systému
System.management
Sestavení
Robustní programování
Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.