Comment acquérir un verrou sur un objet SEDO-Enabled
Pour acquérir 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
RequestLock
méthode .Affectez le chemin d’accès de l’objet que vous souhaitez verrouiller à la
ObjectRelPath
propriété .Définissez la propriété sur
RequestTransfer
true
.Créez une instance d’objet
InvokeMethodOptions
. Dans la propriété Context, ajoutez une paire nom/valeur. Le nom doit être « ObjectLockContext » et la valeur doit être une valeur unique telle qu’un GUID. Ajoutez une autre paire nom/valeur avec « MachineName » et le nom de l’ordinateur demandant le verrouillage.Appelez 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 demande un verrou explicite sur une instance d’objet SMS_ConfigurationItem
.
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);
}
}
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