【发布时间】:2017-04-28 07:07:35
【问题描述】:
我尝试从 c# 运行 powershell 脚本。
首先我将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.
【问题讨论】:
-
您是否尝试将策略范围设置为本地计算机? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
-
运行
Get-ExecutionPolicy -List并使用结果编辑您的问题。此命令将向您显示不同的 Scope 及其 ExecutionPolicy 设置。 -
恐怕这似乎行不通,但要明确一点,这不是命令行级别的,因为我可以在远程桌面上运行而不会出现问题。跨度>
标签: c# powershell