2016-12-13 75 views
2

我尝试从c#运行powershell脚本。ps1无法加载,因为在此系统上禁用了运行脚本

首先,我将ExecutionPolicy设置为Unrestricted,脚本现在从PowerShell ISE开始运行。

现在,这是C#我的代码:

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

和输出是:因为运行的脚本是这样 系统上禁用

PS1无法加载。有关更多信息,请参阅about_Execution_Policies,地址为 http://go.microsoft.com/fwlink/?LinkID=135170

+1

您是否尝试过设定的政策范围,本地机器? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted' – user1432893

+5

运行'Get-ExecutionPolicy -List'并编辑你的问题和结果。该命令将向您显示不同的作用域及其ExecutionPolicy设置。 –

回答

0

这可能是由于当前用户有一个未定义的ExecutionPolicy

你可以尝试以下方法:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted 
相关问题