Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para adquirir un bloqueo explícito en un objeto habilitado para SEDO
Crear una instancia de la
SMS_ObjectLockclase WMIObtenga el objeto de parámetros de método para el
RequestLockmétodo.Asigne la ruta de acceso del objeto que desea bloquear a la
ObjectRelPathpropiedad.Establezca la
RequestTransferpropiedad entrue.Cree una instancia de
InvokeMethodOptionsobjeto. En la propiedad Context, agregue un par nombre/valor. El nombre debe ser "ObjectLockContext" y el valor debe ser un valor único, como un GUID. Agregue otro par nombre/valor con "MachineName" y el nombre del equipo que solicita el bloqueo.Llame a InvokeMethod en la
SMS_ObjectLockinstancia.InvokeMethod devolverá una
SMS_ObjectLockRequestinstancia. Compruebe lasRequestStatepropiedades andLockStatepara obtener más información sobre el éxito o el error de la solicitud.
Ejemplo
En el ejemplo siguiente se solicita un bloqueo explícito de una instancia de SMS_ConfigurationItem objeto.
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);
}
}
El objeto SMS_ObjectLockRequest contiene las siguientes propiedades:
| Propiedad | Descripción |
|---|---|
| RequestID | Identificador único de la solicitud. |
| ObjectRelPath | La ruta de acceso del objeto para el que se solicita el bloqueo. |
| Estado de solicitud | 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 en la que se asignó el bloqueo solicitado. |
RequestState La tabla siguiente muestra los posibles valores de estado de la solicitud. Los estados de solicitud Granted, GrantedAfterTimeout y GrantedLockWasOrphaned indican una solicitud correcta y 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 | Asignación pendiente |
| 4 | Tiempo de espera agotado |
| 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 acerca del control de errores, consulte Acerca de los errores de Configuration Manager.