Como liberar um bloqueio em um objeto SEDO-Enabled
Para liberar um bloqueio explícito em um objeto habilitado para SEDO
Criar uma instância da
SMS_ObjectLock
classe WMIObtenha o objeto parâmetros de método para o
ReleaseLock
método.Atribua o caminho do objeto que você deseja desbloquear à
ObjectRelPath
propriedade.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-EnabledChame InvokeMethod na
SMS_ObjectLock
instância.InvokeMethod retornará uma
SMS_ObjectLockRequest
instância. Verifique asRequestState
propriedades eLockState
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.