ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema

108

Intento ejecutar el powershellscript desde c #.

Primero me puse el ExecutionPolicyque Unrestrictedy el script se está ejecutando ahora de PowerShell ISE.

Ahora este es c # mi código:

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

Y la salida es:

ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema. Para obtener más información, consulte about_Execution_Policies en http://go.microsoft.com/fwlink/?LinkID=135170 .

usuario979033
fuente
1
¿Ha intentado establecer el alcance de la política en Máquina local? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
Totem
6
Ejecute Get-ExecutionPolicy -Listy edite su pregunta con los resultados. Este comando le mostrará los diferentes Scope y su configuración de ExecutionPolicy.
James C.
Eso no parece funcionar, me temo, pero para ser claro, esto NO es a nivel de línea de comando, ya que puedo ejecutarlo en un escritorio remoto sin problemas.
yorkshireflatcap

Respuestas:

329

Esto podría deberse a que el usuario actual tiene un undefined ExecutionPolicy.

Puedes probar lo siguiente:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Tom
fuente
2
Trabajos !! Gracias !
Rakhi Dhavale
2
Tuve este problema con Parcel y lo resolví con tu respuesta, ¡gracias!
Ângelo Polotto
9
Por cierto, esto debe ejecutarse en Powershell, no en cmd de Windows.
Eric Wang
¡¡Muchas gracias!! ¡Los chicos deberían probar esto primero!
Fes Nguyen
3
@HDJEMAI, supongo que esto depende del contexto en el que esté ejecutando esto. Unrestrictedsignifica que puede ejecutar todos los scripts. Otra opción para esto sería establecer la política de ejecución RemoteSignedcomo lo permita, Allow local scripts and remote signed scriptspero dependiendo de la aplicación y de lo que esté haciendo, es posible que aún arroje el mismo error. Creo que su enfoque es válido en términos de seguridad y siempre puede leer cuál es la política antes de usarla Get-ExecutionPloicy. Aunque dicho esto, el alcance es el usuario actual, por lo que el riesgo en mi opinión es pequeño. Espero que esto ayude.
Tom
26

Abra powershell en modo administrativo y ejecute el siguiente comando

Set-ExecutionPolicy RemoteSigned

Soleado
fuente
23

Ejecute este código en su powershell o cmd

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Harrish Selvarajah
fuente
1
¡También funciona para otros idiomas (editando una aplicación Ionic ahora mismo)!
Chiwda
También funcionó para mí, se ejecutó dentro de la terminal de VIsual Studio Code para que Typecript se ejecute usando el comando tsc
aonepathan
8

Si está utilizando código de Visual Studio:

  1. Terminal abierto
  2. Ejecute el comando: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. Luego ejecute el comando transportador conf.js

Esto está relacionado con la ejecución del script de prueba de transportador relacionado y enfrenté el mismo problema y se resolvió así.

Mohd Yusuf
fuente
7

Los siguientes tres pasos se utilizan para corregir que los scripts en ejecución estén deshabilitados en este error del sistema

Paso 1: Para solucionar este tipo de problema, tenemos que iniciar Power Shell en modo administrador.

Paso 2: Escriba el siguiente comando set-ExecutionPolicy RemoteSigned Paso 3: Presione Y para su Confirmación.

Visite lo siguiente para obtener más información https://youtu.be/J_596H-sWsk

Dr. Chandra Kant Sharma
fuente
3

La política de ejecución de PowerShell está configurada de forma predeterminada como Restringida. Puede cambiar las políticas de ejecución de PowerShell con el cmdlet Set-ExecutionPolicy. Para ejecutar un script externo, establezca la política en RemoteSigned.

PS C:> Set-ExecutionPolicy RemoteSigned A continuación se muestra la lista de cuatro políticas de ejecución diferentes en PowerShell

Restringido: no se pueden ejecutar scripts. AllSigned: solo se pueden ejecutar scripts firmados por un editor de confianza. RemoteSigned: los scripts descargados deben estar firmados por un editor de confianza. Sin restricciones: se pueden ejecutar todos los scripts de Windows PowerShell.

Nabeh Nabeh
fuente
3

abra Windows powershell en modo administrador y ejecute el siguiente comando y su trabajo VOILA !!

Set-ExecutionPolicy RemoteSigned

akshay jain
fuente
1

Otra solución es Eliminar ng.ps1 del directorio C: \ Users% username% \ AppData \ Roaming \ npm \ y borrar la caché de npm

Prabhath Withanage
fuente
0

Creo que puede usar PowerShell en modo administrativo o en el símbolo del sistema.

Sashini Hettiarachchi
fuente