Nie można załadować ps1, ponieważ uruchamianie skryptów jest wyłączone w tym systemie


120

Próbuję uruchomić powershellskrypt z poziomu C #.

Najpierw ustawiłem wartość ExecutionPolicyna, Unrestricteda skrypt jest teraz uruchamiany z PowerShell ISE.

Teraz to jest C # mój kod:

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);
        }
    }
}

A wynik to:

Nie można załadować ps1, ponieważ uruchamianie skryptów jest wyłączone w tym systemie. Więcej informacji można znaleźć pod adresem about_Execution_Policies pod adresem http://go.microsoft.com/fwlink/?LinkID=135170 .


1
Czy próbowałeś ustawić zakres zasad na komputer lokalny? „Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted”
— Totem

6
Uruchom Get-ExecutionPolicy -Listi edytuj swoje pytanie z wynikami. To polecenie pokaże różne zakresy i ich ustawienia ExecutionPolicy.
— James C.

Obawiam się, że to nie działa, ale żeby było jasne, NIE jest to na poziomie wiersza poleceń, ponieważ mogę bez problemów uruchomić na zdalnym pulpicie.
— yorkshireflatcap

Odpowiedzi:


372

Może to być spowodowane tym, że aktualny użytkownik ma undefined ExecutionPolicy.

Możesz spróbować następujących rzeczy:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

3
Pracuje !! Dzięki !
— Rakhi Dhavale

2
Miałem ten problem z Parcelem i rozwiązałem twoją odpowiedź, dziękuję!
— Ângelo Polotto

12
Przy okazji, powinno to być wykonane w Powershellcmd systemu Windows, a nie w cmd.
— user218867

Dzięki wielkie!! Faceci powinni najpierw spróbować tego!
— Fes Nguyen

3
@HDJEMAI, myślę, że to zależy od kontekstu, w którym to uruchamiasz. Unrestrictedoznacza, że ​​możesz uruchomić wszystkie skrypty. Inną opcją byłoby ustawienie zasad wykonywania na RemoteSignedtaką, na jaką pozwala, Allow local scripts and remote signed scriptsale w zależności od aplikacji i tego, co robi, może nadal powodować ten sam błąd. Myślę, że Twoje podejście jest uzasadnione w zakresie bezpieczeństwa i zawsze możesz przeczytać, jakie zasady są przed jej użyciem Get-ExecutionPloicy. Chociaż to powiedziane, zakres jest aktualnym użytkownikiem, więc moim zdaniem ryzyko jest niewielkie. Mam nadzieję, że to pomoże.
— Tom

27

Otwórz PowerShell w trybie administracyjnym i uruchom następujące polecenie

Set-ExecutionPolicy RemoteSigned


25

Uruchom ten kod w programie PowerShell lub cmd

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

1
Działa również w innych językach (edycja aplikacji Ionic teraz)!
— Chiwda

Pracował dla mnie, jak również, ran wewnątrz terminalu kod wizualny Studio w celu uzyskania Typescript uruchomiony przy użyciu polecenia TSC
— aonepathan

12

Jeśli używasz kodu Visual Studio:

  1. Otwórz terminal
  2. Uruchom polecenie: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. Następnie uruchom polecenie kątomierz conf.js

Jest to związane z wykonywaniem skryptu testowego kątomierza i napotkałem ten sam problem i został on rozwiązany w ten sposób.


7

Poniższe trzy kroki służą do naprawienia opcji Uruchomione skrypty są wyłączone w przypadku tego błędu systemu

Krok 1: Aby rozwiązać tego rodzaju problem, musimy uruchomić powłokę zasilania w trybie administratora.

Krok 2: Wpisz następujące polecenie set-ExecutionPolicy RemoteSigned Krok 3: Naciśnij klawisz Y, aby potwierdzić.

Odwiedź poniższe, aby uzyskać więcej informacji, https://youtu.be/J_596H-sWsk


4

Zasady wykonywania programu PowerShell są domyślnie ustawione na Ograniczone. Zasady wykonywania programu PowerShell można zmienić za pomocą polecenia cmdlet Set-ExecutionPolicy. Aby uruchomić poza skryptem, ustaw zasady na RemoteSigned.

PS C:> Set-ExecutionPolicy RemoteSigned Poniżej znajduje się lista czterech różnych zasad wykonywania w PowerShell

Ograniczone - nie można uruchamiać żadnych skryptów. AllSigned - można uruchamiać tylko skrypty podpisane przez zaufanego wydawcę. RemoteSigned - pobrane skrypty muszą być podpisane przez zaufanego wydawcę. Bez ograniczeń - można uruchomić wszystkie skrypty programu Windows PowerShell.


3

otwórz Windows PowerShell w trybie administratora i uruchom następujące polecenie i jego pracę VOILA !!

Set-ExecutionPolicy RemoteSigned


2

Innym rozwiązaniem jest usunięcie ng.ps1 z katalogu C: \ Users% username% \ AppData \ Roaming \ npm \ i wyczyszczenie pamięci podręcznej npm


1
Miałem ten sam błąd z modułem npm i to jest rozwiązanie, które lubię najbardziej. Jeśli usuniesz plik .ps1, zdarzy się, że użyje jednego z dwóch pozostałych skryptów (np. .Cmd w systemie Windows, tego bez rozszerzenia) i nie musisz zmieniać konfiguracji zabezpieczeń
— Giovanni P.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.