.ps1 cannot be loaded because the execution of scripts is disabled on this system

umesh.chape picture umesh.chape · May 9, 2013 · Viewed 314.2k times · Source

I run this code to execute PowerShell code from an ASP.NET application:

System.Management.Automation.Runspaces.Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace();
runspace.Open();
System.Management.Automation.Runspaces.Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(@"\\servername\path");

pipeline.Commands.Add("Out-String");

Collection<PSObject> results = pipeline.Invoke();

runspace.Close();

But I am getting an error:

.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details.

The same code runs fine from a command prompt or a windows (Windows Forms) application.

Answer

ghord picture ghord · May 9, 2013

Your script is blocked from executing due to the execution policy.

You need to run PowerShell as administrator and set it on the client PC to Unrestricted. You can do that by calling Invoke with:

Set-ExecutionPolicy Unrestricted