Liberación de un bloqueo en un objeto SEDO-Enabled
Para liberar un bloqueo explícito en un objeto habilitado para SEDO
Creación de una instancia de la
SMS_ObjectLock
clase WMIObtenga el objeto de parámetros de método para el
ReleaseLock
método .Asigne la ruta de acceso del objeto que desea desbloquear a la
ObjectRelPath
propiedad .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).Llame a InvokeMethod en la
SMS_ObjectLock
instancia.InvokeMethod devolverá una
SMS_ObjectLockRequest
instancia de . Compruebe lasRequestState
propiedades yLockState
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.