2016-12-13 120 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 
相關問題