Come rilasciare un blocco su un oggetto SEDO-Enabled
Per rilasciare un blocco esplicito su un oggetto abilitato per SEDO
Creare un'istanza della
SMS_ObjectLock
classe WMIOttiene l'oggetto parametri del metodo per il
ReleaseLock
metodo.Assegnare il percorso dell'oggetto da sbloccare alla
ObjectRelPath
proprietà .Creare un'istanza dell'oggetto
InvokeMethodOptions
. Nella proprietà Context aggiungere una coppia nome/valore. Il nome deve essere "MachineName" e il valore deve essere il nome del computer che rilascia il blocco. Per altre informazioni, vedere Come acquisire un blocco su un oggetto SEDO-EnabledChiamare InvokeMethod nell'istanza
SMS_ObjectLock
di .InvokeMethod restituirà un'istanza
SMS_ObjectLockRequest
di . Controllare leRequestState
proprietà eLockState
per ottenere altre informazioni sull'esito positivo o negativo della richiesta.
Esempio
Nell'esempio seguente viene rilasciato un blocco su un'istanza di oggetto 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);
}
}
L'oggetto SMS_ObjectLockRequest contiene le proprietà seguenti:
Proprietà | Descrizione |
---|---|
Requestid | Identificatore univoco della richiesta. |
ObjectRelPath | Percorso dell'oggetto per cui viene richiesto il blocco. |
RequestState | Indica l'esito positivo o negativo della richiesta. |
LockState | Indica lo stato corrente del blocco richiesto. |
AssignedUser | Indica l'utente attualmente assegnato del blocco richiesto. |
AssignedObjectLockContext | Indica ObjectLockContext a cui è attualmente assegnato il blocco. |
AssignedMachine | Indica il computer attualmente assegnato del blocco richiesto. |
AssignedSiteCode | Indica il sito corrente del blocco richiesto. |
AssignedTimeUTC | Indica l'ora in cui è stato assegnato il blocco richiesto. |
RequestState
Nella tabella seguente vengono visualizzati i valori possibili dello stato della richiesta. Gli stati della richiesta Granted, GrantedAfterTimeout e GrantedLockWasOrphaned indicano una richiesta riuscita e l'utente può quindi apportare e salvare modifiche all'oggetto. Tutte le altre richieste indicano un errore.
RequestStateID | RequestStateName |
---|---|
0 | Unknown |
2 | Richiesto |
3 | RequestedCanceled |
4 | ResponseReceived |
10 | Concesso |
11 | GrantedAfterTimeout |
12 | GrantedLockWasOrphaned |
20 | DeniedLockAlreadyAssigned |
21 | DeniedInvalidObjectVersion |
22 | DeniedLockNotFound |
23 | DeniedLockNotLocal |
24 | DeniedRequestTimedOut |
50 | Error |
52 | ErrorRequestNotFound |
53 | ErrorRequestTimedOut |
LockState
Nella tabella seguente vengono visualizzati i valori possibili dello stato di blocco.
LockStateID | LockStateName |
---|---|
0 | Nessuno |
1 | Assegnate |
2 | Richiesto |
3 | PendingAssignment |
4 | TimedOut |
5 | Notfound |
Compilazione del codice
L'esempio C# richiede:
Namespaces
Sistema
System.Management
Assembly
Programmazione efficiente
Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.