Et oui un écran de veille permettant de voir les build en cours :
Lien : http://teambuildscreensaver.codeplex.com
Sur mon blog vous trouverez l'information sur la gestion de projet, tableau de bord et toutes informations sur les projets.
Ce document vous permettra d'utiliser des commandes assez facilement. Ce qu'il faut bien voir, c'est que les commandes PsTFS doivent être utilisées avec la puissance de Powershell.
Pour l'ajout d'utilisateur la commande "Add-MemberProject" se repose sur deux proriétés :
L'utilisation de Powershell permet de récupérer les informations d'un fichier text :
PsTFS > : $content = get-content C:\Users\Administrateur\Desktop\PowerShell\users.txt
PsTFS > : foreach ($line in $content) { $tab = $line.split("") ; Add-MemberProject -tfs $tfs -ProjectName VSTS.Noham -UserName $tab[0] -Roles $tab[1];}
Pour faire la différence avec deux répertoires de TFS il y a la commande "Get-Diff " cette commande permet d'avoir la liste des fichiers différents :
PS C:\> $item = Get-Diff -TFS $tfs -PathL "$\EvaTraining\Developpement" -PathR "$\EvaTraining\Integration"
Compared 1386
itemsSame: 1286
Diff: 55
Right Only: 12
Left Only: 33
PS C:\> $item FT
Information TypeDiff DateCheckInL DateCheckInR TypeItem
----------- ----------------------------------------
$/EvaTraining/Developpement/Co... Diff 14/09/2009 17:02:13 27/05/2009
18:37:03 File
Pas toujours facile de lire l'information dans la console Powershell, hors avec la verison V2 nous avons "Out-GridView", ce qui permet de faire :
$item Out-GridView
et d'avoir
Et le système de filtre
Merci à tous ceux qui me font des retours, cela permet de continuer à faire vivre ce projet.
Lien : http://pstfs.codeplex.com
Bon téléchargement
Vous l'aurez peut être déjà compris, la notion première (pour moi) de cet outils est :
"Le travail collaboratif permet à chacun de poser les bases d'un projet et de permettre la contruction d'un application dans les meilleurs conditions, le tout sur un serveur"
Cela engloble bein sur :
Et tellement plus....
Cet outils n'est pas que tourné développement pour les développeur. Le développement d'un application implique plusieurs rôles :
Mais aussi
Et oui je vous le dit, cet outils est un plus pour l'ensemble de la chaîne, de l'équipe afin de satifaire notre client.

public static ListGetMembersProject(TeamFoundationServer tfs, string
ProjectName)
{
Listlg = new List ();
// Get a reference to the
version control service
VersionControlServer versionControl =
PsService.VCS(tfs);
IGroupSecurityService sec = PsService.IGSS(tfs);
TeamProject tp =
versionControl.GetTeamProject(ProjectName);
Identity[] appGroups =
sec.ListApplicationGroups(tp.ArtifactUri.AbsoluteUri);
foreach (Identity
group in appGroups)
{
Identity[] groupMembers =
sec.ReadIdentities(SearchFactor.Sid, new string[] { group.Sid },
QueryMembership.Expanded);
foreach (Identity member in groupMembers)
{
PsGroups pg = new PsGroups();
pg.AccountName = member.AccountName;
pg.Deleted = member.Deleted;
pg.Description = member.Description;
pg.DisplayName = member.DisplayName;
pg.DistinguishedName =
member.DistinguishedName;
pg.Domain = member.Domain;
pg.MailAddress =
member.MailAddress;
pg.MemberOf = member.MemberOf;
pg.SecurityGroup =
member.SecurityGroup;
pg.Sid = member.Sid;
pg.SpecialType =
member.SpecialType;
pg.Type = member.Type;
pg.Members = new
List();
pg.TypeMember = TypeMember.TFS;
if (member.Members != null)
{
foreach (string memberSid in member.Members)Étape 6 : Renvois d'une liste
{
Identity memberInfo = sec.ReadIdentity(SearchFactor.Sid, memberSid,
QueryMembership.None);
PsMember pm = new PsMember();
pm.AccountName =
memberInfo.AccountName;
pm.Deleted = memberInfo.Deleted;
pm.Description
= memberInfo.Description;
pm.DisplayName = memberInfo.DisplayName;
pm.DistinguishedName = memberInfo.DistinguishedName;
pm.Domain =
memberInfo.Domain;
pm.MailAddress = memberInfo.MailAddress;
pm.MemberOf
= memberInfo.MemberOf;
pm.SecurityGroup = memberInfo.SecurityGroup;
pm.Sid = memberInfo.Sid;
pm.SpecialType = memberInfo.SpecialType;
pm.Type = memberInfo.Type;
pg.Members.Add(pm);
}
}
lg.Add(pg);
}
}
return lg;
}