Compartilhar via


Como liberar um bloqueio em um objeto SEDO-Enabled

Para liberar um bloqueio explícito em um objeto habilitado para SEDO

  1. Criar uma instância da SMS_ObjectLock classe WMI

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

  3. Atribua o caminho do objeto que você deseja desbloquear à ObjectRelPath propriedade.

  4. Crie uma InvokeMethodOptions instância de objeto. Na propriedade Context, adicione um par nome/valor. O nome deve ser "MachineName" e o valor deve ser o nome do computador que libera o bloqueio. Para obter mais informações, consulte Como adquirir um bloqueio em um objeto SEDO-Enabled

  5. Chame InvokeMethod na SMS_ObjectLock instância.

  6. InvokeMethod retornará uma SMS_ObjectLockRequest instância. Verifique as RequestState propriedades e LockState para obter mais informações sobre o sucesso ou falha da solicitação.

Exemplo

O exemplo a seguir libera um bloqueio em uma instância 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);   

    }  
}  

O objeto SMS_ObjectLockRequest contém as seguintes propriedades:

Propriedade Descrição
Requestid Identificador exclusivo da solicitação.
ObjectRelPath O caminho do objeto para o qual o bloqueio é solicitado.
RequestState Indica o êxito ou a falha da solicitação.
LockState Indica o estado atual do bloqueio solicitado.
AssignedUser Indica o usuário atualmente atribuído do bloqueio solicitado.
AssignedObjectLockContext Indica ObjectLockContext ao qual o bloqueio está atribuído no momento.
AssignedMachine Indica o computador atribuído atualmente do bloqueio solicitado.
AssignedSiteCode Indica o site atual do bloqueio solicitado.
AssignedTimeUTC Indica o momento em que o bloqueio solicitado foi atribuído.

RequestState
A tabela abaixo exibe os possíveis valores de estado da solicitação. Os estados de solicitação Granted, GrantedAfterTimeout e GrantedLockWasOrphaned indicam uma solicitação bem-sucedida e o usuário pode fazer e salvar modificações no objeto. Todas as outras solicitações indicam erro.

RequestStateID RequestStateName
0 Desconhecido
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
A tabela abaixo exibe os possíveis valores de estado de bloqueio.

LockStateID LockStateName
0 Sem sinal
1 Atribuído
2 Solicitado
3 PendingAssignment
4 Timedout
5 Notfound

Compilando o código

O exemplo C# requer:

Namespaces

Sistema

System.Management

Assembly

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.

Confira também

Configuration Manager SEDO