Не удается обойти политику выполнения "Restricted"

Я только что загрузил инструмент, который открывает командную строку Visual Studio из среды IDE в корне текущего проекта. Моя главная проблема в том, что он открывает командное окно старого стиля, в котором я бы предпочел окно PowerShell. Согласно этому посту, это простое изменение должно позволить это:

cmd.exe /k ""%VS120COMNTOOLS%VsDevCmd.bat" & powershell"

Когда я получаю эту команду из-за пределов VS 2015, она работает нормально и дает мне окно PowerShell. Тем не менее, когда я пытаюсь запустить его изнутри VS, используя пункт меню утилиты, он выдает мне эту ошибку:

Не удается загрузить модуль PSReadline. Консоль работает без PSReadline.,: Файл C: \ Users \ brady \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1 не может быть загружен, так как в этой системе отключены скрипты. Для получения дополнительной информации см. About_Execution_Policies на http://go.microsoft.com/fwlink/?LinkID=135170. В строке:1 символ:3 + . 'C:\Users\brady\Documents\WindowsPowerShell\Microsoft.PowerShell_pr ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId: UnauthorizedAccess PS C:\Development\vNext\Commerce\src\Commerce.Test> Политика получения-исполнения PS C: \ Development \ vNext \ Commerce \ src \ Commerce.Test> Get-ExecutionPolicy Restricted

Моя глобальная политика исполнения RemoteSigned, но в том же окне, которое показывает мне ошибку, когда я запускаю Get-ExecutionPolicyвозвращаемое значение Restricted,

Я попытался изменить мою команду, чтобы включить переключатель PS:

cmd /k ""%VS140COMNTOOLS%VsDevCmd.bat" & powershell -ExecutionPolicy Bypass" 

Но это все равно дает мне точно такую ​​же ошибку.

Вывод команды, предложенной @PetSerAl в комментариях

[Environment]::Is64BitOperatingSystem;[Environment]::Is64BitProcess;Get-Executi‌​onPolicy -List

дает два разных результата. Первое в нормальном окне PS, внешнем по отношению к VS:

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

И второе в единственном окне PS, которое я могу найти внутри VS, менеджер пакетов:

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process    RemoteSigned
  CurrentUser       Undefined
 LocalMachine       Undefined

1 ответ

Решение

Вы можете настроить внешнюю команду и при желании настроить нажатие клавиши для нее.

Я только что сделал это в моем VS2015... аккуратно!

Создать файл cmd

Создать файл cmd для вызова VsDevCmd.bat (Командная строка разработчика для VS2015), а затем PowerShell.

dev14powershell.cmd

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"
powershell -ExecutionPolicy Bypass

Настроить внешний инструмент

Инструменты -> Внешние инструменты

Внешние инструменты VS2015

Вызывает вышеуказанный cmd-файл, запускается в Solution Dir (настраивается)

Запустите новый внешний инструмент

Запустить PowerShell External Tool

Результат

Новое командное окно запущено в каталоге решений.

Необязательно, настройте сочетание клавиш

Сервис -> Параметры -> Клавиатура

Ищи external и запомните номер / порядок команды, которую вы создали (4 в моем случае)

Сочетание клавиш

Нажмите назначить, и вы получите:

Ярлык Powershell

Другие вопросы по тегам