#visual-studio #azure-devops #tfs
Вопрос:
Мы настроили виртуальную машину Windows и развернули там агент для создания нашего кода и запуска сценариев.
В нашей виртуальной машине мы используем две разные версии командной строки PowerShell:
- Windows PowerShell
- PowerShell для разработчиков для VS 2019.
Как мы можем запустить «PowerShell разработчика для VS 2019» из нашего сценария YAML конвейера и выполнить там наш извлеченный .ps1
файл?
Существует несколько разновидностей задач PowerShell, которые могут быть инициированы из конвейера, хотя и не уверены, какая из них будет служить этой цели. Они заключаются в следующем:
- Azure PowerShell
- PowerShell
- PowerShell на целевой машине
- PowerShell для служебной структуры.
Что из вышеперечисленного представляет собой «PowerShell для разработчиков для VS 2019»?
Причина этой специфической особенности PowerShell заключается в:
- Необходимо иметь некоторые инструменты .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. Но это один раз навсегда, может быть, вы сможете написать сценарий, который извлекает команды.