Как запустить PowerShell script из Visual Studio 2010

Если у меня есть файл .ps в Visual Studio, как мне его запустить в контексте проекта?

Ответы

Ответ 1

Не уверен, что именно вы подразумеваете под "из контекста проекта", но вы можете:

  • Создайте Process

    Process p = new Process();
    
  • Затем установите команду процесса:

    powershell.exe YourScriptName.ps1
    

Это работает, если вам просто нужно запустить script.

Ответ 2

Я сделал это, добавив элемент контекстного меню, связанный с внешним инструментом:

Добавьте "Внешний инструмент". Откройте "Инструменты" > "Внешние инструменты". Добавьте новый с этими настройками:

  • Название: Запуск с помощью Powershell
  • Команда: powershell.exe
  • Аргументы: -ExecutionPolicy RemoteSigned -File "$ (ItemPath)"
  • Начальный каталог: $(ItemDir)
  • Установите флажок "Использовать окно вывода"
  • Если вы планируете использовать скрипты, требующие аргументов, установите флажок "Приглашение к аргументам"

Обратите внимание на позицию вашего инструмента в списке (1,2 и т.д.). Нажмите "ОК".

  • Перейдите в меню "Инструменты" > "Настроить", "Команды", выберите "Контекстное меню" и выберите "Контекстные меню проекта и решения". Пункт.
  • Нажмите "Добавить команду..".
  • Выберите категорию "Инструменты" и выберите "Внешняя команда X" где x - позиция вашего инструмента в списке.
  • Нажмите "ОК".
  • Переместите его в нужное положение в меню и нажмите "Изменить выбор", чтобы дать ему дружеское имя,
  • добавить сочетания клавиш и т.д.
  • Нажмите "Закрыть".

Щелкните правой кнопкой мыши файл .ps1 в решении explorere и наслаждайтесь. (ПРИМЕЧАНИЕ. Я также сделал это для cmd.exe для запуска .bat файлов.)

Ответ 3

Лучший способ сделать это - установить расширение PowerGUI для Visual Studio 2010

Одной из особенностей этого расширения является интегрированное окно инструментальной панели инструментов. Это имеет доступ к объектам автоматизации, таким как DTE через $EnvDTE, и обеспечит хорошую среду для запуска script для проекта

Ответ 4

Вы также должны посмотреть StudioShell, который обеспечивает глубокую интеграцию DTE в пользовательский хост PowerShell.