Een vergrendeling op een SEDO-Enabled-object verkrijgen
Een expliciete vergrendeling verkrijgen voor een SEDO-object
Een exemplaar van de
SMS_ObjectLock
WMI-klasse makenHaal het parameterobject voor de
RequestLock
methode op.Wijs het objectpad toe van het object dat u wilt vergrendelen aan de
ObjectRelPath
eigenschap.Stel de
RequestTransfer
eigenschap in optrue
.Een objectexemplaren
InvokeMethodOptions
maken. Voeg bij de eigenschap Context een naam/waardepaar toe. De naam moet 'ObjectLockContext' zijn en de waarde moet een unieke waarde zijn, zoals een GUID. Voeg nog een naam/waardepaar toe met 'MachineName' en de naam van de computer die de vergrendeling aanvraagt.Roep 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 expliciete vergrendeling van een SMS_ConfigurationItem
objectexemplaren aangevraagd.
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);
}
}
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 locatie 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.