2014-10-01 3 views
4

У меня есть сборщик TFS 2013 Update 2 buildserver. Когда я создаю проект, я проверяю некоторые файлы, изменяю некоторые вещи и проверяю их снова. Это отлично работает. Единственная проблема в том, что кто-то имеет чек из одного из этих файлов, сборщик увидит, что в качестве ошибки и сборка будет частично выполнена. На самом деле это всего лишь информационное сообщение, но сборка считает это ошибкой. Как я могу подавить эти сообщения?Отключить выходные сообщения powershell

У меня есть следующий Powershell команда:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse 

Эта команда из TFS 2013 электроинструментов.

Я попытался следующие, но это не работает:

  • Добавить -ErrorAction с Igonore и SilentlyContinue
  • Добавить -Out-Null
  • Try и пустой Поймать

сообщение, которое брошено для каждого файла: Путь к файлу : Открыт для редактирования в Workspace; Ральф Jansen

Благодарности

ответ

0

Попробуйте один из них:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse -ErrorAction SilentlyContinue -wa 0 | Out-null 

или

[void](Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse -ErrorAction SilentlyContinue -wa 0) 

Вы также можете присвоить результат вашего командлета к переменной (и ничего не делать с ней):

$throwaway = Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse -ErrorAction SilentlyContinue -wa 0 
+0

Привет, я пробовал все 3, но все не сработало ... –

+0

Как выглядит ложный вывод? Если это предупреждение, вы можете добавить переключатель '-wa 0' в одну из приведенных выше команд и повторите попытку – Raf

+0

. Вывод - это только сообщение, которое я сказал в вопросе выше ... Я думаю, это то же сообщение, которое появляется в выходное окно Visual Studio, если вы проверяете файл, который уже выдан кем-то другим ... Просто информация/предупреждение ... –

0

Я считаю, что он должен быть в стандартном потоке вывода, который должен быть отправлен в null. Попробуйте это:

$Null = Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse *>&1 

*> & 1 перенаправляет вывод на стандартный вывод и $ нуль является зарезервированным переменной для этой цели. Он более эффективен, чем трубопровод до нуля.

Другой альтернативой может быть установка предпочтительного действия для ошибок. Я видел раньше, когда командлеты, похоже, не подтверждают общий параметр -ErrorAction.

$ErrorActionPreference = 'SilentlyContinue' 
Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse 
$ErrorActionPreference = 'Continue' 
+0

Спасибо за ответ, но не работает ... :( –

+0

Можете ли вы опубликовать скриншот того, о чем вы говорите? Было бы полезно. –

0

Попробуйте это:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse 2>&1 >$null 

2>&1 аргумент перенаправляет stderr к stdout и >$null аргумент перенаправляет stdout к нулю, так не будет отображаться ничего.

Или, если вы хотите, чтобы скрыть данные, переданные в stderr, просто перенаправить что:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse 2>$null 
+0

Спасибо для ответа, но не работает. Пробовал оба ... –

+0

Я не использую TFS, поэтому я не могу проверить вашу команду напрямую. Можете ли вы показать скриншот о том, что происходит? – aphoria

1

После некоторых усилий, я успешно получить его для нашего Tfs строит! \ О/

Вы должны закончить командную строку с *>&1 | out-null

Для Exemple:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse *>&1 | out-null 

Побочный эффект в том, что все сообщения, которые вызывают ошибки теряются.

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