Ошибка cmd кода Visual Studio: невозможно загрузить, так как в этой системе отключены скрипты - PullRequest
0 голосов
/ 18 мая 2019

Внутри Visual Studio Code я пытаюсь выполнить script.bat из командной строки, но получаю следующую ошибку:

Файл C: \ Theses_Repo \ train-cnn \ environment \ Scripts \ activ.ps1 не может быть загружен, так как в этой системе отключены запущенные сценарии.

После прочтения this я попытался запустить код Visual Studio в режиме администратора, думая, что проблема заключается в привилегиях. Но ошибка все равно выкидывает.

Ответы [ 2 ]

2 голосов
/ 18 мая 2019

Я обнаружил здесь , что вы можете добавить к своим настройкам кода Visual Studio следующее, и проблема исчезнет:

"terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "Bypass"]

Причина в том, что при интеграции командной строки сборки, такой как код Visual Studio, вам нужно самостоятельно устанавливать политики командной строки. Установив вышеуказанные конфигурации, код Visual Studio сделает это за вас.

(прочитайте это , чтобы лучше понять политики командной строки)

0 голосов
/ 19 мая 2019

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

Если это ваш компьютер, просто измените политику выполненияна RemoteSigned или неограниченно, так что это относится ко всей вашей системе.Если вы просто хотите использовать его в VSCode, измените файл настроек или измените ярлык, чтобы включить политику выполнения, которую вы хотите использовать.Рекомендация удаленно подписана.Это означает, что будет выполняться весь локальный код, но все удаленные сценарии должны быть подписаны.

Если это корпоративный компьютер, для которого для параметра Выполнение установлено значение «Ограничено», то никакой код не будет выполняться до тех пор, пока этот параметр не будет изменен.Вы все еще можете запустить код, выбрав его в редакторе VSCode и нажав F8.Теперь, если они применили эту политику, вам нужно поговорить с ИТ-специалистом, чтобы они изменили ее для вас.

Все это подробно описано в файлах справки PowerShell.

Get-Command -Name '*executionpolicy*' | ft -AutoSize

CommandType Name                Version Source                       
----------- ----                ------- ------                       
Cmdlet      Get-ExecutionPolicy 3.0.0.0 Microsoft.PowerShell.Security
Cmdlet      Set-ExecutionPolicy 3.0.0.0 Microsoft.PowerShell.Security


# get function / cmdlet details
(Get-Command -Name Get-ExecutionPolicy).Parameters
Get-help -Name Get-ExecutionPolicy -Full
Get-help -Name Get-ExecutionPolicy -Online
Get-help -Name Get-ExecutionPolicy -Examples

    Get-ExecutionPolicy
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    Get-ExecutionPolicy -List

(Get-Command -Name Set-ExecutionPolicy).Parameters
Set-help -Name Set-ExecutionPolicy -Full
Set-help -Name Set-ExecutionPolicy -Online
Set-help -Name Set-ExecutionPolicy -Examples

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    Set-ExecutionPolicy -ExecutionPolicy Restricted
    Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-ExecutionPolicy} | Set-ExecutionPolicy -Force
    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned -Force
    Get-ExecutionPolicy -List
    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Undefined
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy AllSigned
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Обратите внимание: если ваша организация контролирует это, то снова поговорите с ними , прежде чем пытаться обойти политику , потому что если они это сделали, это также означает, что они следят за ней, и если вы делаете этоэто будет знать.Я видел такие вещи, как это порождение RPE(Возобновить производство событий)

...