ps1 неможливо завантажити, оскільки в цій системі запущено сценарії


120

Я намагаюся запустити powershellскрипт з c #.

По- перше я встановити ExecutionPolicyдля Unrestrictedі сценарій працює тепер від PowerShell ISE.

Тепер це c # мій код:

class Program
{
    private static PowerShell ps;
    static void Main(string[] args)
    {
        ps = PowerShell.Create();
        string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
        ExecuteScript(ps1File);
        Console.ReadLine();
    }

    static void ExecuteScript(string script)
    {
        try
        {
            ps.AddScript(script);
            Collection<PSObject> results = ps.Invoke();
            Console.WriteLine("Output:");
            foreach (var psObject in results)
            {
                Console.WriteLine(psObject);
            }
            Console.WriteLine("Non-terminating errors:");
            foreach (ErrorRecord err in ps.Streams.Error)
            {
                Console.WriteLine(err.ToString());
            }
        }
        catch (RuntimeException ex)
        {
            Console.WriteLine("Terminating error:");
            Console.WriteLine(ex.Message);
        }
    }
}

І результат:

ps1 неможливо завантажити, оскільки в цій системі запущено сценарії. Для отримання додаткової інформації дивіться about_Execution_Policies за адресою http://go.microsoft.com/fwlink/?LinkID=135170 .


1
Ви намагалися встановити область політики на Локальна машина? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
Тотем

6
Запустіть Get-ExecutionPolicy -Listі відредагуйте своє питання з результатами. Ця команда покаже вам різні сфери застосування та налаштування ExecutionPolicy.
Джеймс К.

Здається, це не працює, боюся, але, щоб було зрозуміло, це НЕ на рівні командного рядка, оскільки я можу працювати на віддаленому робочому столі без проблем.
yorkshireflatcap

Відповіді:


372

Це може бути пов’язано з тим, що поточний користувач має невизначений термін ExecutionPolicy.

Ви можете спробувати наступне:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

3
Працює !! Дякую !
Rakhi Dhavale

2
У мене була проблема з посилкою, і я вирішив вашою відповіддю, дякую!
Янгело Полотто

12
До речі, це слід виконати у Powershell, а не в cmd windows.
user218867

Дуже дякую!! Хлопці повинні спробувати це спочатку!
Фес Нгуєн

3
@HDJEMAI, я думаю, це залежить від того, в якому контексті ви це запускаєте. Unrestrictedозначає, що ви можете запускати всі сценарії. Іншим варіантом цього є встановлення політики виконання, RemoteSignedоскільки це дозволить, Allow local scripts and remote signed scriptsале залежно від програми та того, що вона робить, це все одно може спричинити ту саму помилку. Я вважаю, що ваш підхід є виправданим з точки зору безпеки, і ви завжди можете прочитати, яка політика, перед тим, як користуватися Get-ExecutionPloicy. Незважаючи на те, що це сфера дії, це поточний користувач, тому ризик, на мій погляд, невеликий. Сподіваюся, це допоможе.
Том

27

Відкрийте PowerShell в адміністративному режимі та запустіть наступну команду

Set-ExecutionPolicy RemoteSigned


25

Запустіть цей код у своїй PowerShell або cmd

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

1
Працює для інших мов (редагування програми Ionic прямо зараз) теж!
Chiwda

Працював і для мене, працював у терміналі VIsual Studio Code, щоб запустити
Typescript

12

Якщо ви використовуєте код візуальної студії:

  1. Відкрити термінал
  2. Запустіть команду: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. Потім запустіть команду транспортир conf.js

Це пов’язано із виконанням сценарію тесту транспортира, і я зіткнувся з тією ж проблемою, і вона була вирішена так.


7

Наступні три кроки використовуються для виправлення запуску сценаріїв вимкнено для цієї системної помилки

Крок 1: Щоб вирішити подібну проблему, нам потрібно запустити оболонку живлення в режимі адміністратора.

Крок 2: Введіть наступний набір команд-ExecutionPolicy RemoteSigned Крок 3: натисніть Y для підтвердження.

Відвідайте наступне, щоб отримати додаткову інформацію https://youtu.be/J_596H-sWsk


4

Політику виконання PowerShell за замовчуванням встановлено Обмежено. Ви можете змінити політику виконання PowerShell за допомогою командлета Set-ExecutionPolicy. Для запуску за межами сценарію встановіть політику RemoteSigned.

PS C:> Set-ExecutionPolicy RemoteSigned Нижче наведено список чотирьох різних політик виконання в PowerShell

Обмежено - не можна запускати сценарії. AllSigned - можна запускати лише сценарії, підписані надійним видавцем. RemoteSigned - завантажені сценарії повинні бути підписані надійним видавцем. Необмежений - можна запускати всі сценарії Windows PowerShell.


3

відкрийте windows PowerShell в режимі адміністратора та запустіть наступну команду та її роботу VOILA !!

Set-ExecutionPolicy RemoteSigned


2

Іншим рішенням є видалення ng.ps1 з каталогу C: \ Users% username% \ AppData \ Roaming \ npm \ та очищення кешу npm


1
У мене була та сама помилка з модулем npm, і це рішення мені найбільше подобається. Якщо ви видалите файл .ps1, він буде використовувати один із двох інших сценаріїв (наприклад, .cmd у Windows, той, що не має розширення), і вам не потрібно змінювати конфігурацію безпеки
Джованні П.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.