2012-09-28 6 views
5

Ich versuche, ein kleines Skript zu schreiben, alle Benutzer Bilder auf ihre AD Bild zu setzen, habe ich einige der herumspringen in ILSpy und fand heraus, was die TFS-Server setzen mit API, jedoch muss der Code etwas anders sein, da ich stattdessen die Client-API verwende.API Benutzer Bild zu aktualisieren - Identität Erweiterte Eigenschaften nicht sparend

Der Code, den ich unten habe, kann erfolgreich alle Benutzer in tfs durchlaufen, sie in AD nachschlagen, das Thumbnail aufnehmen, die Eigenschaft auf die TFS-Identität setzen. Aber ich kann nicht für das Leben von mir Figur bekommen das erweiterte Eigentum wieder in TFS zu retten.

Der Code nicht Ausnahme, sondern die Eigenschaft nicht auf den Wert gesetzt ich es einstellen, wenn ich die Anwendung nächsten laufen.

Kennt jemand die Möglichkeit, erweiterte Eigenschaften über die Client-API zu speichern?

Microsoft.TeamFoundation.Client.TeamFoundationServer teamFoundationServer = new Microsoft.TeamFoundation.Client.TeamFoundationServer("{URL TO TFS}"); 

FilteredIdentityService service = teamFoundationServer.GetService<FilteredIdentityService>(); ; 
IIdentityManagementService2 service2 = teamFoundationServer.GetService<IIdentityManagementService2>(); 

foreach (var identity in service.SearchForUsers("")) 
{ 
    var user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), identity.UniqueName); 
    if (user == null) continue; 
    var de = new System.DirectoryServices.DirectoryEntry("LDAP://" + user.DistinguishedName); 
    var thumbNail = de.Properties["thumbnailPhoto"].Value as byte[]; 

    identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.Data", thumbNail); 
    identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.UploadDate", DateTime.UtcNow); 

    service2.UpdateExtendedProperties(identity); 
} 

Antwort

7

Es wurde herausgefunden, benötigt, um einige zusätzliche Eigenschaften einzustellen.

Microsoft.TeamFoundation.Client.TeamFoundationServer teamFoundationServer = new Microsoft.TeamFoundation.Client.TeamFoundationServer("http://urltotfs"); 

FilteredIdentityService service = teamFoundationServer.GetService<FilteredIdentityService>(); ; 
IIdentityManagementService2 service2 = teamFoundationServer.GetService<IIdentityManagementService2>(); 

foreach (var identity in service.SearchForUsers("")) 
{ 
    var user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), identity.UniqueName); 
    if (user == null) continue; 
    var de = new System.DirectoryServices.DirectoryEntry("LDAP://" + user.DistinguishedName); 
    var thumbNail = de.Properties["thumbnailPhoto"].Value as byte[]; 

    identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Data", thumbNail); 
    identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Type", "image/png"); 
    identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Id", Guid.NewGuid().ToByteArray()); 
    identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.Data", null); 
    identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.UploadDate", null); 

    service2.UpdateExtendedProperties(identity); 
} 
Verwandte Themen