2016-07-27 15 views
1

Ich versuche einige Prozesse mit Powershell zu automatisieren. Bei jeder Verzweigung müssen wir die Abfrage "Current Release" auf unserer TFS-Site, die User Stories durchsucht, manuell anpassen, damit sie die richtige Release-Version in den Suchparametern hat. Beispiel Screenshots unten.Wie bearbeitet man eine Abfrage auf TFS (Website) mit Powershell?

enter image description here

Dies ist, wo ich auf TFS gehen würde, um die Abfrage zugreifen und dann bearbeiten. Unten ist der Editor-Bildschirm, und ich würde die Datumsfelder dort mit dem Datum der neuen Release-Version ersetzen. Ich möchte auf diese Felder per Powershell (als eine Art von TFS-Objekt, würde ich denken) zugreifen und sie aktualisieren.

enter image description here

Ich habe mit den TFS Power Tools für Powershell, sowie einige der Objekt Sachen rumgespielt, wenn ich den Server $server = New-Object Microsoft.TeamFoundation.Client.TeamFoundationServer($tfsURI) bekommen. Aber durch Google-Fu und nur damit herumzuspielen, kann ich nicht herausfinden, wie man die Abfrage von Powershell bearbeitet. Kann jemand helfen?

Antwort

0

Dies ist keine direkte Antwort auf Ihre Frage, aber unten ist wahrscheinlich genug, um Sie zu beginnen, herauszufinden, es für sich selbst. Ich glaube, Sie wahrscheinlich Verwendung von $version_control_server

## 
# http://blog.majcica.com/2015/11/15/powershell-tips-and-tricks-retrieving-tfs-collections-and-projects/ 
# this will get you a list of tfs projects hosted on a tfs server 
## 

# Add-Type -AssemblyName "Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
Add-Type -Path 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Client.dll' 

$uri = 'http://host:8080/tfs' 

$tfsConfigurationServer = [Microsoft.TeamFoundation.Client.TfsConfigurationServerFactory]::GetConfigurationServer($uri) 
$tpcService = $tfsConfigurationServer.GetService('Microsoft.TeamFoundation.Framework.Client.ITeamProjectCollectionService') 

$sortedCollections = $tpcService.GetCollections() | Sort-Object -Property Name 

# 

$collection = $sortedCollections[0] 

$collectionUri = $uri + '/' + $collection.Name 
$tfsTeamProject = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($collectionUri) 
$cssService = $tfsTeamProject.GetService('Microsoft.TeamFoundation.Server.ICommonStructureService3') 
$sortedProjects = $cssService.ListProjects() | Sort-Object -Property Name 


## 
# https://lajak.wordpress.com/2013/01/28/tfs-2012-api-find-all-solutions-in-source-control/ 
# this will take your list of projects and get list of solution paths within those projects 
## 


Add-Type -Path 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.VersionControl.Client.dll' 

$version_control_server = $tfsTeamProject.GetService('Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer') 

$solution_items = $version_control_server.getitems(
    '$/*', 
    [Microsoft.TeamFoundation.VersionControl.Client.VersionSpec]::Latest, 
    [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]::Full, 
    [Microsoft.TeamFoundation.VersionControl.Client.DeletedState]::NonDeleted, 
    [Microsoft.TeamFoundation.VersionControl.Client.ItemType]::File 
) 

$path_array = $solution_items.items | foreach-object { $_.serveritem } 

($path_array -join "`r`n") | out-file 'C:\tfs_paths.txt' 

## 
0

TFS Power Tools machen können diese Funktion nicht erreichen. Sie verwenden entweder die .NET-Clientbibliotheken, wie in this article erwähnt, oder rufen die VSTS-Rest-API auf: Update a query.