2012-09-28 11 views
5

すべてのユーザーイメージをADイメージに設定するための小さなスクリプトを作成しようとしています。ILSpyで飛び降り、TFSサーバーを使用して設定するものを見つけました。私はクライアントAPIを使用しているので、コードは少し異なる必要があります。ユーザーのイメージを更新するAPI - ID拡張プロパティが保存されない

以下のコードは、tfs内のすべてのユーザーを順番に繰り返し、ADで検索し、サムネイルを取得し、TFS IDでプロパティを設定します。しかし私は私の人生のためにTFSに戻って保存する拡張プロパティを取得することはできません。

コードは例外ではありませんが、このプロパティは、次にアプリケーションを実行するときに設定した値に設定されていません。

クライアントAPIを使用して拡張プロパティを保存する方法を知っている人はいますか?

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); 
} 

答えて

7

追加のプロパティを設定する必要があります。

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); 
} 
関連する問題