Frage

Ich bin gerade dabei, ein Skript zu erstellen, um eine große Anzahl von Bewegungen in meiner TFS-Instanz auszuführen.Ich habe die tfs-Cmdlets mit den 2010 TFS Power Tools zur Verfügung, aber die Get-Help-Dokumentation dafür ist sehr spärlich.Insbesondere scheint Add-TfsPendingChange das Umbenennen nicht zu unterstützen, was mich dazu zwingt, stattdessen „tf.exe rename“ zu verwenden.

Erst einmal:Habe ich irgendwie die Dokumentation zu den Cmdlets übersehen?Ich habe get-help für die Befehle ausprobiert, aber sie unterstützen die Flags -detailed oder -examples nicht.Ist noch etwas verfügbar?

Zweitens:Aus welchem ​​Grund bevorzuge ich eines der Cmdlets gegenüber der regulären tf.exe?Gibt es bei der Ausführung ähnlicher Funktionen andere Vorteile als das Durchführen von Objekten durch das Rohr?

War es hilfreich?

Lösung

Die TF-Cmdlets sind an dieser Stelle ein eher minimalistisches Angebot, und dazu gehört auch die bereitgestellte Dokumentation.Im Allgemeinen würde ich die TF-Cmdlets verwenden, wenn sie das unterstützen, was ich versuche – insbesondere, wenn Sie Fragen haben.Die Verarbeitung der Ausgabe der Abfrage-Cmdlets ist viel einfacher, da Sie umfangreiche Objekte anstelle des Textstroms erhalten, den Sie analysieren müssen, wenn Sie so etwas verwenden tf status . /r.

Bedenken Sie außerdem, dass die TF-Cmdlets auf einem x64-Windows-System nur auf einem 32-Bit-PowerShell-Host funktionieren.

Andere Tipps

Die TF-Cmdlets sind nicht genau nutzlos, aber ... Wir haben uns entschieden, sie jetzt in unserer Build-Umgebung zu verwenden, obwohl es Textparspesing bedeutet.

Abgesehen von der X64-Sache gibt es viele

Eine dritte Möglichkeit besteht darin, die öffentlichen TFS-Assemblys in PowerShell zu verwenden.Wenn Sie dies tun, können Sie auf alle TFS-Clientfunktionen zugreifen und weiterhin auch TFS-Cmdlets verwenden.Ob Sie sich für diesen Ansatz entscheiden tf.exe und die anderen ausführbaren TFS-Befehlszeilendateien hängen davon ab, welche Skriptumgebung Sie bevorzugen.

Hier ist ein PowerShell-Befehl zum Verweisen auf die öffentlichen Assemblys von TFS 2013 (für TFS 2012 oder 2010 einfach ändern). Version=12.0.0.0 Zu Version=11.0.0.0 oder Version=10.0.0.0).

'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.VersionControl.Client' |
    ForEach-Object {
        Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    }

Für Ihr Umbenennungsbeispiel könnten Sie dann:

  1. Benutzen Sie die Get-TfsWorkspace Cmdlet zum Instanziieren von aMicrosoft.TeamFoundation.VersionControl.Client.Workspace Objekt.
  2. Ruf den Workspace Objekt PendRename, GetPendingChanges Und Einchecken Methoden.

Etwas wie das:

$workspace = Get-Workspace
$workspace.PendRename($oldItemPath, $newItemPath)
$pendingChange = $workspace.GetPendingChanges($oldItemPath)
$workspace.Checkin($pendingChange, $comment)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top