Como Disponibilizar um Bloqueio num Objeto com Capacidade Para SEDO

Para lançar 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 ReleaseLock método.

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

  4. Criar uma InvokeMethodOptions instância de objeto. Na propriedade Contexto, adicione um par de nome/valor. O nome deve ser "MachineName" e o valor deve ser o nome do computador que liberta o bloqueio. Para mais informações, consulte Como Adquirir uma Fechadura num Objeto SEDO-Enabled

  5. Ligue para InvocarMethod sobre o SMS_ObjectLock caso.

  6. 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 liberta uma fechadura numa SMS_ConfigurationItem instância do 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);   

    }  
}  

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