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.