Powershell и TFS: tf.exe против командлетов Power tools TFS?

Я нахожусь в процессе создания сценария для выполнения большого количества перемещений в моем экземпляре TFS. У меня есть командлеты tfs, доступные с TFS Power Tools 2010, но документация по ним очень скудна. В частности, похоже, что Add-TfsPendingChange не поддерживает переименование, что вынуждает меня вместо этого использовать «переименование tf.exe».

Прежде всего: я как-то пропустил документацию по командлетам? Я пробовал использовать команды get-help, но они не поддерживают флаги -detailed или -examples. Есть ли что-нибудь еще в наличии?

Во-вторых: по какой причине я должен предпочесть какой-либо из командлетов обычному tf.exe? Есть ли преимущества, кроме передачи объектов через конвейер при выполнении аналогичных функций?


person bwerks    schedule 04.02.2011    source источник


Ответы (3)


На данный момент командлеты TF представляют собой несколько минималистичное предложение, которое включает предоставленную документацию. В общем, я бы использовал командлеты TF, если они поддерживают то, что я пытаюсь сделать, особенно если у вас есть какие-либо вопросы. Обработка вывода командлетов запроса намного проще, потому что они предоставляют вам расширенные объекты вместо текстового потока, который вы должны анализировать при использовании чего-то вроде tf status . /r.

Также имейте в виду, что в системе Windows x64 командлеты TF работают только на 32-разрядном узле PowerShell.

person Keith Hill    schedule 04.02.2011
comment
Хороший вызов консоли x86. Я нашел файл dll-Help.xml, но читать его с помощью get-help намного приятнее. Спасибо! - person bwerks; 05.02.2011
comment
Вау, очевидно, командлеты также совершенно неспособны обнаруживать/обрабатывать изменения слияния. Обратно в tf.exe иду вроде. - person bwerks; 09.07.2011
comment
В будущем рассмотрите возможность использования общедоступных сборок TFS из PowerShell (см. пример кода в моем ответе). - person weir; 30.11.2015

Командлеты tf не то чтобы бесполезны, но... мы решили не пытаться использовать их в нашей среде сборки прямо сейчас, даже если это означает синтаксический анализ текста.

Помимо x64, есть много отсутствующих команд (спасибо, @Keith) и отсутствуют параметры, и самое главное они не работают в удаленных сеансах!

person Jaykul    schedule 09.02.2011

Третий вариант — использовать общедоступные сборки TFS из PowerShell. При этом вы можете получить доступ ко всем возможностям клиента TFS и по-прежнему использовать командлеты TFS. Выберете ли вы этот подход вместо tf.exe и других исполняемых файлов командной строки TFS, зависит от того, какую среду сценариев вы предпочитаете.

Вот команда PowerShell для ссылки на общедоступные сборки TFS 2013 (для TFS 2012 или 2010 просто измените Version=12.0.0.0 на Version=11.0.0.0 или 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"
    }

Для вашего примера переименования вы могли бы:

  1. Используйте командлет Get-TfsWorkspace для создания экземпляра объекта Microsoft.TeamFoundation.VersionControl.Client.Workspace.
  2. Вызовите PendRename объекта Workspace, GetPendingChanges и Checkin методы.

Что-то вроде этого:

$workspace = Get-Workspace
$workspace.PendRename($oldItemPath, $newItemPath)
$pendingChange = $workspace.GetPendingChanges($oldItemPath)
$workspace.Checkin($pendingChange, $comment)
person weir    schedule 02.07.2015