Como Adquirir um Bloqueio num Objeto com Capacidade Para SEDO

Adquirir um bloqueio explícito num objeto ativado pelo SEDO

  1. Criar um exemplo da SMS_ObjectLock classe WMI

  2. Obtenha o objeto de parâmetros do método para o RequestLock método.

  3. Atribua o caminho do objeto do objeto que deseja bloquear para a ObjectRelPath propriedade.

  4. Desa estação RequestTransfer a true .

  5. Criar uma InvokeMethodOptions instância de objeto. Na propriedade Contexto, adicione um par de nome/valor. O nome deve ser "ObjectLockContext" e o valor deve ser um valor único, como um Guid. Adicione outro par de nome/valor com "MachineName" e o nome do computador que solicita o bloqueio.

  6. Ligue para InvocarMethod sobre o SMS_ObjectLock caso.

  7. Invocar oMethod vai devolver uma SMS_ObjectLockRequest instância. Consulte as RequestState propriedades e propriedades para obter mais LockState informações sobre o sucesso ou falha do pedido.

Exemplo

O exemplo a seguir solicita uma fechadura explícita numa SMS_ConfigurationItem instância de 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);     

     }  
}  

O SMS_ObjectLockRequest objeto contém as seguintes propriedades:

Propriedade Descrição
RequestID Identificador único do pedido.
ObjectRelPath O caminho do objeto para o qual é solicitada a fechadura.
Estado de Pedido Indica o sucesso ou insucesso do pedido.
Estado do Bloqueio Indica o estado atual do bloqueio solicitado.
DesignadoUser Indica o utilizador atualmente designado do bloqueio solicitado.
DesignadoObjectLockContext Indica o ObjectLockContext a que o bloqueio está atualmente atribuído.
Atribuição de Aachina Indica o computador atualmente designado do bloqueio solicitado.
Código de Site Atribuído Indica o local atual do bloqueio solicitado.
DesignadoTimeuTC Indica a hora em que o bloqueio solicitado foi atribuído.

Estado de Pedido
A tabela abaixo apresenta os valores do estado de pedido possíveis. Os estados de pedido concedidos, GrantedAfterTimeout e GrantedLockWasOrphaned indicam um pedido bem sucedido e o utilizador pode então fazer e guardar modificações no objeto. Todos os outros pedidos indicam erro.

RequestStateID Nome do Estado do Pedido
0 Desconhecido
2 Pedido
3 SolicitadoCanceled
4 RespostaSRecebidas
10 Concedido
11 ConcedidoAfterTimeout
12 ConcedidoLockWasOrphaned
20 NegadoLockAlreadyAssigned
21 NegaInvalidObjectVersion
22 NegadoLockNotFound
23 NegadoLockNotLocal
24 RecusadoRequestTimedOut
50 Erro
52 ErrorRequestNotFound
53 ErrorRequestTimedOut

Estado do Bloqueio
A tabela abaixo apresenta os possíveis valores do estado de bloqueio.

LockStateID LockStateName
0 Não atribuído
1 Atribuído
2 Pedido
3 Inscrição pendente
4 TimedOut
5 NotFound

A Compilar o Código

O exemplo C# requer:

Espaços de nomes

Sistema

Sistema.Gestão

Assemblagem

Programação Robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.

Consulte também

SEDO do Configuration Manager