Een vergrendeling op een SEDO-Enabled-object vrijgeven
Een expliciete vergrendeling vrijgeven voor een object waarvoor SEDO is ingeschakeld
Een exemplaar van de
SMS_ObjectLock
WMI-klasse makenHaal het parameterobject voor de
ReleaseLock
methode op.Wijs het objectpad van het object dat u wilt ontgrendelen toe aan de
ObjectRelPath
eigenschap.Een objectexemplaren
InvokeMethodOptions
maken. Voeg bij de eigenschap Context een naam/waardepaar toe. De naam moet 'MachineName' zijn en de waarde moet de naam zijn van de computer die de vergrendeling losgeeft. Zie How to Acquire a Lock on a SEDO-Enabled Object (Een vergrendeling verkrijgen op een SEDO-Enabled-object) voor meer informatieRoep InvokeMethod aan op het
SMS_ObjectLock
exemplaar.InvokeMethod retourneert een
SMS_ObjectLockRequest
exemplaar. Controleer deRequestState
eigenschappen enLockState
voor meer informatie over het slagen of mislukken van de aanvraag.
Voorbeeld
In het volgende voorbeeld wordt een vergrendeling op een SMS_ConfigurationItem
objectexemplaren vrijgegeven.
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);
}
}
Het object SMS_ObjectLockRequest bevat de volgende eigenschappen:
Eigenschap | Omschrijving |
---|---|
RequestID | Unieke id van de aanvraag. |
ObjectRelPath | Het pad van het object waarvoor de vergrendeling is aangevraagd. |
RequestState | Geeft het slagen of mislukken van de aanvraag aan. |
LockState | Geeft de huidige status van de aangevraagde vergrendeling aan. |
AssignedUser | Geeft de momenteel toegewezen gebruiker van de aangevraagde vergrendeling aan. |
AssignedObjectLockContext | Geeft ObjectLockContext aan waaraan de vergrendeling momenteel is toegewezen. |
AssignedMachine | Geeft de momenteel toegewezen computer van de aangevraagde vergrendeling aan. |
AssignedSiteCode | Geeft de huidige site van de aangevraagde vergrendeling aan. |
AssignedTimeUTC | Geeft het tijdstip aan waarop de aangevraagde vergrendeling is toegewezen. |
RequestState
In de onderstaande tabel worden de mogelijke aanvraagstatuswaarden weergegeven. Aanvraagstatussen Verleend, GrantedAfterTimeout en GrantedLockWasOrphaned geven een geslaagde aanvraag aan en de gebruiker kan vervolgens wijzigingen aanbrengen en opslaan in het object. Alle andere aanvragen geven een fout aan.
RequestStateID | RequestStateName |
---|---|
0 | Unknown |
2 | Aangevraagd |
3 | RequestedCanceled |
4 | ResponseReceived |
10 | Verleend |
11 | GrantedAfterTimeout |
12 | GrantedLockWasOrphaned |
20 | DeniedLockAlreadyAssigned |
21 | DeniedInvalidObjectVersion |
22 | DeniedLockNotFound |
23 | DeniedLockNotLocal |
24 | DeniedRequestTimedOut |
50 | Error |
52 | ErrorRequestNotFound |
53 | ErrorRequestTimedOut |
LockState
In de onderstaande tabel worden de mogelijke waarden voor de vergrendelingsstatus weergegeven.
LockStateID | LockStateName |
---|---|
0 | Toegewezen |
1 | Toegewezen |
2 | Aangevraagd |
3 | In behandelingToewijzing |
4 | Timed-out |
5 | NotFound |
De code compileren
Voor het C#-voorbeeld is het volgende vereist:
Naamruimten
Systeem
System.Management
Vergadering
Robuust programmeren
Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.