Condividi tramite


Come rilasciare un blocco su un oggetto SEDO-Enabled

Per rilasciare un blocco esplicito su un oggetto abilitato per SEDO

  1. Creare un'istanza della SMS_ObjectLock classe WMI

  2. Ottiene l'oggetto parametri del metodo per il ReleaseLock metodo.

  3. Assegnare il percorso dell'oggetto da sbloccare alla ObjectRelPath proprietà .

  4. 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-Enabled

  5. Chiamare InvokeMethod nell'istanza SMS_ObjectLock di .

  6. InvokeMethod restituirà un'istanza SMS_ObjectLockRequest di . Controllare le RequestState proprietà e LockState 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 La tabella seguente visualizza i possibili valori di 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 Accordato
11 GrantedAfterTimeout
12 GrantedLockWasOrphaned
20 DeniedLockAlreadyAssigned
21 DeniedInvalidObjectVersion
22 DeniedLockNotFound
23 DeniedLockNotLocal
24 DeniedRequestTimedOut
50 Error
52 ErrorRequestNotFound
53 ErrorRequestTimedOut

LockState La tabella seguente visualizza i possibili valori dello stato di blocco.

LockStateID LockStateName
0 Nessuno
1 Assegnato
2 Richiesto
3 PendingAssignment
4 TimedOut
5 NotFound

Compilazione del codice

L'esempio C# richiede:

Spazi dei nomi

Sistema

System.Management

Assembly

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Vedere anche

Configuration Manager SEDO