ps1 yüklenemiyor çünkü bu sistemde çalışan komut dosyaları devre dışı bırakıldı


108

powershellKomut dosyasını c # 'dan çalıştırmayı deniyorum .

Ilk i set ExecutionPolicyetmek Unrestrictedve şu anda komut çalıştırılıyor PowerShell ISE.

Şimdi bu c # benim kodum:

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

Ve çıktı:

ps1 yüklenemiyor çünkü bu sistemde çalışan komut dosyaları devre dışı bırakıldı. Daha fazla bilgi için http://go.microsoft.com/fwlink/?LinkID=135170 adresindeki about_Execution_Policies konusuna bakın .


1
Politika kapsamını Yerel makine olarak ayarlamayı denediniz mi? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
Totem

6
Get-ExecutionPolicy -ListSorunuzu sonuçlarla çalıştırın ve düzenleyin. Bu komut size farklı Scope'ları ve ExecutionPolicy ayarını gösterecektir.
James C.

Korkarım bu işe yaramıyor gibi görünüyor, ama açık olmak gerekirse, bu komut satırı düzeyinde DEĞİL, çünkü uzak bir masaüstünde sorunsuz bir şekilde çalışabiliyorum.
yorkshireflatcap

Yanıtlar:


333

Bunun nedeni, mevcut kullanıcının tanımsız olması olabilir ExecutionPolicy.

Aşağıdakileri deneyebilirsiniz:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

2
İşler !! Teşekkürler !
Rakhi Dhavale

2
Bu problemi Parcel ile yaşadım ve cevabınızla çözdüm, teşekkürler!
Ângelo Polotto

10
BTW, bu PowershellWindows cmd'si değil, çalıştırılmalıdır .
Eric Wang

Çok teşekkürler!! Erkekler önce bunu denemeli!
Fes Nguyen

3
@HDJEMAI, sanırım bu, bunu hangi bağlamda çalıştırdığına bağlı. Unrestrictedtüm komut dosyalarını çalıştırabileceğiniz anlamına gelir. Bunun için başka bir seçenek, yürütme politikasını RemoteSignedbunun izin verdiği şekilde ayarlamak Allow local scripts and remote signed scriptsolabilir, ancak uygulamaya ve ne yaptığına bağlı olarak yine de aynı hatayı verebilir. Yaklaşımınızın güvenlik açısından geçerli olduğunu düşünüyorum ve kullanmadan önce her zaman politikanın ne olduğunu okuyabilirsiniz Get-ExecutionPloicy. Bu söylense de kapsam mevcut kullanıcıdır, bu yüzden benim görüşüme göre risk küçüktür. Umarım bu yardımcı olur.
Tom

26

Powershell'i yönetici modunda açın ve aşağıdaki komutu çalıştırın

Set-ExecutionPolicy RemoteSigned


23

Bu kodu powershell veya cmd'nizde çalıştırın

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

1
Diğer diller için de çalışıyor (şu anda bir İyonik uygulamayı düzenleme)
Chiwda

Benim için de çalıştı,
Typecript'i

8

Görsel stüdyo kodu kullanıyorsanız:

  1. Açık terminal
  2. Şu komutu çalıştırın: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. Ardından iletki conf.js komutunu çalıştırın

Bu, iletki test komut dosyası yürütme ile ilgili ve aynı sorunla karşılaştım ve bu şekilde çözüldü.


7

Aşağıdaki üç adım, Çalışan Komut Dosyalarının bu Sistem hatasında devre dışı bırakılmasını düzeltmek için kullanılır

Adım 1: Bu tür bir sorunu çözmek için power shell'i yönetici modunda başlatmalıyız.

Adım 2: Aşağıdaki komutu yazın - ExecutionPolicy RemoteSigned Step3: Onayınız için Y'ye basın.

Daha fazla bilgi için aşağıdakileri ziyaret edin https://youtu.be/J_596H-sWsk


3

PowerShell yürütme politikası varsayılan olarak Kısıtlı olarak ayarlanmıştır. PowerShell yürütme politikalarını Set-ExecutionPolicy cmdlet'i ile değiştirebilirsiniz. Komut dosyası dışında çalıştırmak için ilkeyi RemoteSigned olarak ayarlayın.

PS C:> Set-ExecutionPolicy RemoteSigned Aşağıda, PowerShell'deki dört farklı yürütme politikasının listesi bulunmaktadır.

Kısıtlı - Hiçbir komut dosyası çalıştırılamaz. AllSigned - Yalnızca güvenilir bir yayıncı tarafından imzalanan komut dosyaları çalıştırılabilir. RemoteSigned - İndirilen komut dosyaları güvenilir bir yayıncı tarafından imzalanmalıdır. Sınırsız - Tüm Windows PowerShell komut dosyaları çalıştırılabilir.


3

yönetici modunda windows powershell'i açın ve aşağıdaki komutu çalıştırın ve onun çalışması VOILA !!

Set-ExecutionPolicy RemoteSigned


1

Diğer bir çözüm, ng.ps1'i C: \ Users% username% \ AppData \ Roaming \ npm \ dizininden kaldırmak ve npm önbelleğini temizlemektir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.