2010-06-10 3 views
0

Я новичок в PowerShell, и я пытаюсь получить ветки из TFS и объединить их с помощью сценария PowerShell. К сожалению, у меня нет первого препятствия.Доступ к TFS из Powershell

У меня есть Visual Studio 2010, установленный на моем локальном компьютере и доступ к серверу TFS (также 2010).

Я бегу сценарий из моей локальной машине и иметь следующие строки:

$tfs = get-tfs http://TFSServerName:8080/TFSProject 
$branchfolders = $tfs.VCS.GetItems('$/Dev/Branches/', $tfs.RecursionType::OneLevel) 

и я получаю следующее сообщение об ошибке во второй строке 2 выше

Exception вызова «GetItems» с " 2 ":« Не удается подключиться к удаленному серверу »

Я настроил сервер TFS для приема входящих соединений на порт 8080, который работает, но теперь я не уверен, как разрешить эта ошибка. Требуется ли дополнительная настройка?

Спасибо за предоставленную помощь.

+1

Я действительно рекомендую вам использовать C# для автоматизации работы с TFS, api - это хорошо. – Andrey

+0

Прохладный. Будем держать это в уме, но делать это в powershell. – w4ymo

+1

Что произойдет, если вы '$ tfs.EnsureAuthenticated()'? Кроме того, чтобы заставить это работать на моей машине, мне пришлось полностью квалифицировать имя сервера TFS (например,'$ tfs = get-tfs http: // tfs: 8080') – Robaticus

ответ

1

Спасибо за помощь.

Я не понимаю, почему это устраняет проблему, но когда я использовал адрес IIS на сервере, я не смог получить к нему доступ. Я считаю, что это работает на других, но почему-то не я.

например.

$tfs = get-tfs http://TFSServerName:8080/TFSProject 

не работает, но:

$tfs = get-tfs TFSServerName/TFSProject 

работает.

1

Прежде всего, вы можете сделать большую часть того, что вам нужно с tf.exe, command line tool, которое вы получите с TF-клиентом. tf dir, tf get, tf merge, tf resolve и tf checkin Вам интересна, так же как потенциальной, tf branches. Мы все время объединяемся из командной строки, потому что из командной строки доступны только определенные параметры, такие как tf merge/baseless (иногда) и/discard, когда мы хотим исключить набор изменений в качестве кандидата слияния. Мы делаем это, потому что у нас есть сценарии, которые работают в ночное время в наших ветвях обслуживания, которые позволяют нам знать, сколько проверок было проверено без объединения с Trunk. Иногда есть набор изменений, который никогда не должен быть объединен с Trunk, например. релиз для конкретного патча.

В файле Team Foundation Power Tools есть также утилита PowerShell для TFS, но она не так способна, как tf.exe. Тем не менее для запросов это замечательно, потому что вы возвращаете .NET-объекты.

WRT к скрипту Manning, вы передаете полный URL-адрес, включая имя коллекции TF, например. http://myserver.acme.com:8080/tfs/myteamproject? Наконец, это $tfs.RecursionType::OneLevel не кажется правильным. Не должно быть [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]::OneLevel? Иногда вы можете указать только значение перечисления в виде строки, например. 'OneLevel' - если связующее средство PowerShell .NET может найти правильную перегрузку.

+0

Привет. Спасибо за ответ. Я использую полный путь. Я испробовал все ваши предложения для параметра RecursionType, но все равно получаю эту ошибку: Вызов исключения «GetItems» с аргументами «2»: «TF31002: невозможно подключиться к этому серверу Team Foundation: http: // MyServer: 8080/tfs/dev. Team Foundation Server Url: http: // MyServer: 8080/tfs/dev. Моя основная цель - сделать ночное слияние с Trunk ко всем ветвям развития. – w4ymo

+0

'TF.exe dir local_mapped_path' работает? TF.Exe должен быть в VSInstallDir \ Common7 \ IDE. Или, если на то пошло, можете ли вы выполнять операции в Source Control Explorer в Visual Studio? Просто интересно, находится ли проблема где-то между вашим ПК и TF-сервер, или если это проблема с использованием API управления версиями TFS. Один человек утверждал, что они были удалены McAfee и эта проблема исчезла. Может быть, это проблема локального межсетевого экрана? Кстати, вы в RTM-версии сервера TFS 2010 и VS 2010? –

+0

Спасибо за ответ. TF.exe dir local_mapped_path работал и вернул список всей папки в рамках моего проекта команды. Я могу получить доступ к TFS в рамках проводника Source control explorer в VS 2010. Я запускаю RTM VS 2010 Premium и RTM TFS 2010. Это может быть локальная проблема, но я не знаю, что проверить, поскольку у них есть только брандмауэр Windows 7 по умолчанию позволяет весь исходящий трафик, а также VS 2010 отлично работает с TFS. – w4ymo

Смежные вопросы