Запустите PowerShell разработчика для VS 2019 из конвейера Azure DevOps

#visual-studio #azure-devops #tfs

Вопрос:

Мы настроили виртуальную машину Windows и развернули там агент для создания нашего кода и запуска сценариев.

В нашей виртуальной машине мы используем две разные версии командной строки PowerShell:

  1. Windows PowerShell
  2. PowerShell для разработчиков для VS 2019.

Как мы можем запустить «PowerShell разработчика для VS 2019» из нашего сценария YAML конвейера и выполнить там наш извлеченный .ps1 файл?

Существует несколько разновидностей задач PowerShell, которые могут быть инициированы из конвейера, хотя и не уверены, какая из них будет служить этой цели. Они заключаются в следующем:

  1. Azure PowerShell
  2. PowerShell
  3. PowerShell на целевой машине
  4. PowerShell для служебной структуры.

Что из вышеперечисленного представляет собой «PowerShell для разработчиков для VS 2019»?

Причина этой специфической особенности PowerShell заключается в:

  1. Необходимо иметь некоторые инструменты .NET Framework (CorFlags.exe), которые доступны только в «PowerShell разработчика для VS 2019», а не в другом.

Ответ №1:

Разработчик PowerShell для VS 2019-это обычный PowerShell с импортированным модулем, вы можете точно увидеть, что именно таким образом:

  • Перейдите в меню «Пуск» и найдите PowerShell для разработчиков для VS 2019.
  • Щелкните правой кнопкой мыши на нем и откройте расположение файла-вы получите следующее:

введите описание изображения здесь

  • Теперь снова щелкните правой кнопкой мыши на ярлыке и свойствах разработчика PowerShell для VS 2019.
  • Вы увидите в расположении, которое запускает обычный PowerShell с помощью некоторой команды:

    C:WindowsSysWOW64WindowsPowerShellv1.0powershell.exe -noe -c "amp;{Import-Module """C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7ToolsMicrosoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell bc97b47b}"

введите описание изображения здесь

Теперь, если вы откроете PowerShell и запустите там сценарий:

 amp;{Import-Module "C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7ToolsMicrosoft.VisualStudio.DevShell.dll"; Enter-VsDevShell bc97b47b}
 

Вы получите PowerShell разработчика для VS 2019 и CoreFlags.exe будет работать:

введите описание изображения здесь

Итак, вам нужно использовать обычную задачу PowerShell (ваш вариант 2) и выполнить приведенную выше команду в начале сценария.

Примечание: вы должны скопировать именно ту команду, которую видите в свойствах, на каждой машине она может отличаться.

Комментарии:

1. Если кому-то нужно вызвать «PowerShell разработчика для VS 2019» на 100 машинах, он/она должен скопировать команду 100 раз, потому что для каждой машины она может отличаться. Считаете ли вы, что это считается хорошим процессом для автоматизации ?

2. Но это один раз навсегда, может быть, вы сможете написать сценарий, который извлекает команды.