Comment libérer un verrou sur un objet SEDO-Enabled
Pour libérer un verrou explicite sur un objet compatible SEDO
Créer une instance de la
SMS_ObjectLock
classe WMIObtient l’objet de paramètres de méthode pour la
ReleaseLock
méthode .Affectez le chemin d’accès de l’objet que vous souhaitez déverrouiller à la
ObjectRelPath
propriété .Créez une instance d’objet
InvokeMethodOptions
. Dans la propriété Context, ajoutez une paire nom/valeur. Le nom doit être « MachineName » et la valeur doit être le nom de l’ordinateur qui libère le verrou. Pour plus d’informations, consultez Comment acquérir un verrou sur un objet SEDO-EnabledAppelez InvokeMethod sur l’instance
SMS_ObjectLock
.InvokeMethod retourne une
SMS_ObjectLockRequest
instance. Vérifiez lesRequestState
propriétés etLockState
pour obtenir plus d’informations sur la réussite ou l’échec de la demande.
Exemple
L’exemple suivant libère un verrou sur une instance d’objet SMS_ConfigurationItem
.
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);
}
}
L’objet SMS_ObjectLockRequest contient les propriétés suivantes :
Propriété | Description |
---|---|
RequestID | Identificateur unique de la demande. |
ObjectRelPath | Chemin d’accès de l’objet pour lequel le verrou est demandé. |
RequestState | Indique la réussite ou l’échec de la demande. |
LockState | Indique l’état actuel du verrou demandé. |
AssignedUser | Indique l’utilisateur actuellement affecté du verrou demandé. |
AssignedObjectLockContext | Indique ObjectLockContext auquel le verrou est actuellement affecté. |
AssignedMachine | Indique l’ordinateur actuellement affecté du verrou demandé. |
AssignedSiteCode | Indique le site actuel du verrou demandé. |
AssignedTimeUTC | Indique l’heure à laquelle le verrou demandé a été attribué. |
RequestState
Le tableau ci-dessous affiche les valeurs d’état de requête possibles. Les états de requête Granted, GrantedAfterTimeout et GrantedLockWasOrphaned indiquent qu’une demande a réussi et que l’utilisateur peut ensuite apporter et enregistrer des modifications à l’objet. Toutes les autres demandes indiquent une erreur.
RequestStateID | RequestStateName |
---|---|
0 | Inconnu |
2 | Demandé |
3 | RequestedCanceled |
4 | ResponseReceived |
10 | Granted |
11 | GrantedAfterTimeout |
12 | GrantedLockWasOrphaned |
20 | DeniedLockAlreadyAssigned |
21 | DeniedInvalidObjectVersion |
22 | DeniedLockNotFound |
23 | DeniedLockNotLocal |
24 | DeniedRequestTimedOut |
50 | Error |
52 | ErrorRequestNotFound |
53 | ErrorRequestTimedOut |
LockState
Le tableau ci-dessous affiche les valeurs d’état de verrouillage possibles.
LockStateID | LockStateName |
---|---|
0 | Non attribué |
1 | Affecté |
2 | Demandé |
3 | PendingAssignment |
4 | TimedOut |
5 | NotFound |
Compilation du code
L’exemple C# nécessite :
Espaces de noms
Système
System.Management
Assembly
Programmation robuste
Pour plus d’informations sur la gestion des erreurs, consultez À propos des erreurs Configuration Manager.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour