При использовании Get-ExecutionPolicy -list
в VSCode для PowerShell v5 x64 & x86 он возвращает следующее:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Bypass
CurrentUser Undefined
LocalMachine Undefined
При использовании той же команды в VSCode и консоли PowerShell v7 возвращается:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process RemoteSigned
CurrentUser Undefined
LocalMachine RemoteSigned
Есть 2 записи реестра, которые устанавливают ExecutionPolicy (Первоначально: ByPass)
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command REG_SZ "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process RemoteSigned }; & '%1'"
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\0\Command REG_SZ "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process RemoteSigned }; & '%1'"
Эти 2 записи изначально были установлены для Установить политику выполнения на ByPass, и я установил эти 2 записи вручную в RemoteSigned. (почему эти 2 записи в реестре и почему они были настроены для обхода?!).
Для реестра PowerShell не заданы дополнительные политики, кроме этих 2 записей. Установка их в RemoteSigned, казалось, сделала свое дело для v7, но не для v5.
При проверке ExecutionPolicy в консоли PowerShell v5 все они не определены.
при проверке vscode-powershell. В журнале говорится, что он запускает PowerShell с аргументами:
PowerShell args: -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command Import-Module ...
Я вижу, что расширение PowerShell vscode устанавливает некоторые из этих параметров в следующем файле: C: \ Users \ UserName .vscode \ extensions \ ms-vscode.powershell-2020.3.0 \ out \ src \ process. js
Но я не уверен, что это правильный файл для внесения этих изменений.
Я хочу иметь возможность проверить / установить для параметра ExecutionPolicy для VSCode значение RemoteSigned при запуске языкового сервера, где я могу это сделать?
Кроме того, почему в реестре есть 2 записи, которые устанавливают ExecutionPolicy ByPass, когда ExecutionPolicy не равно AllSigned. Это могло произойти после установки Chocolatey с помощью их однострочного установщика: Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Я не использую никаких профилей.
Я знаю, это немного грязно, извините за это, мой главный вопрос где VSCode устанавливает ExecutionPolicy при запуске языкового сервера и могу ли я это изменить. При проведении какого-либо расследования я обнаружил, что существует 2 записи реестра, которые устанавливают, что ExecutionPolicy должен обходить, почему этот стандарт выглядит как проблема безопасности. (что могло быть вызвано установкой шоколада, не уверен)