Comparteix a través de


Liberación de un bloqueo en un objeto SEDO-Enabled

Para liberar un bloqueo explícito en un objeto habilitado para SEDO

  1. Creación de una instancia de la SMS_ObjectLock clase WMI

  2. Obtenga el objeto de parámetros de método para el ReleaseLock método .

  3. Asigne la ruta de acceso del objeto que desea desbloquear a la ObjectRelPath propiedad .

  4. Cree una instancia de InvokeMethodOptions objeto. En la propiedad Context, agregue un par nombre-valor. El nombre debe ser "MachineName" y el valor debe ser el nombre del equipo que libera el bloqueo. Para obtener más información, vea How to Acquire a Lock on a SEDO-Enabled Object (Cómo adquirir un bloqueo en un objeto SEDO-Enabled).

  5. Llame a InvokeMethod en la SMS_ObjectLock instancia.

  6. InvokeMethod devolverá una SMS_ObjectLockRequest instancia de . Compruebe las RequestState propiedades y LockState para obtener más información sobre el éxito o el error de la solicitud.

Ejemplo

En el ejemplo siguiente se libera un bloqueo en una instancia de SMS_ConfigurationItem objeto.

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);   

    }  
}  

El objeto SMS_ObjectLockRequest contiene las siguientes propiedades:

Propiedad Descripción
RequestID Identificador único de la solicitud.
ObjectRelPath Ruta de acceso del objeto para el que se solicita el bloqueo.
RequestState Indica el éxito o el error de la solicitud.
LockState Indica el estado actual del bloqueo solicitado.
AssignedUser Indica el usuario asignado actualmente del bloqueo solicitado.
AssignedObjectLockContext Indica ObjectLockContext al que está asignado actualmente el bloqueo.
AssignedMachine Indica el equipo asignado actualmente del bloqueo solicitado.
AssignedSiteCode Indica el sitio actual del bloqueo solicitado.
AssignedTimeUTC Indica la hora a la que se asignó el bloqueo solicitado.

RequestState
En la tabla siguiente se muestran los posibles valores de estado de solicitud. Los estados de solicitud Granted, GrantedAfterTimeout y GrantedLockWasOrphaned indican una solicitud correcta y, a continuación, el usuario puede realizar y guardar modificaciones en el objeto. Todas las demás solicitudes indican un error.

RequestStateID RequestStateName
0 Unknown
2 Solicitado
3 RequestedCanceled
4 ResponseReceived
10 Concedido
11 GrantedAfterTimeout
12 GrantedLockWasOrphaned
20 DeniedLockAlreadyAssigned
21 DeniedInvalidObjectVersion
22 DeniedLockNotFound
23 DeniedLockNotLocal
24 DeniedRequestTimedOut
50 Error
52 ErrorRequestNotFound
53 ErrorRequestTimedOut

LockState
En la tabla siguiente se muestran los posibles valores de estado de bloqueo.

LockStateID LockStateName
0 Sin asignar
1 Asignado
2 Solicitado
3 PendingAssignment
4 TimedOut
5 NotFound

Compilar el código

El ejemplo de C# requiere:

Espacios de nombres

Sistema

System.Management

Ensamblado

Programación sólida

Para obtener más información sobre el control de errores, consulte Acerca de los errores de Configuration Manager.

Consulta también

Configuration Manager SEDO