Не удается обойти политику выполнения "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-ExecutionPolicy -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
Настроить внешний инструмент
Инструменты -> Внешние инструменты
Вызывает вышеуказанный cmd-файл, запускается в Solution Dir (настраивается)
Запустите новый внешний инструмент
Результат
Новое командное окно запущено в каталоге решений.
Необязательно, настройте сочетание клавиш
Сервис -> Параметры -> Клавиатура
Ищи external
и запомните номер / порядок команды, которую вы создали (4 в моем случае)
Нажмите назначить, и вы получите: