Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法加载ps1,因为在此系统上禁用了运行脚本_C#_Powershell - Fatal编程技术网

C# 无法加载ps1,因为在此系统上禁用了运行脚本

C# 无法加载ps1,因为在此系统上禁用了运行脚本,c#,powershell,C#,Powershell,我尝试从c#运行powershell脚本 首先,我将ExecutionPolicy设置为Unrestricted,脚本现在从PowerShell ISE运行 这是我的代码: 类程序 { 私有静态PowerShell ps; 静态void Main(字符串[]参数) { ps=PowerShell.Create(); 字符串ps1File=Path.Combine(Environment.CurrentDirectory,“script.ps1”); ExecuteScript(PS1文件); C

我尝试从c#运行
powershell
脚本

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

这是我的代码:

类程序
{
私有静态PowerShell ps;
静态void Main(字符串[]参数)
{
ps=PowerShell.Create();
字符串ps1File=Path.Combine(Environment.CurrentDirectory,“script.ps1”);
ExecuteScript(PS1文件);
Console.ReadLine();
}
静态void ExecuteScript(字符串脚本)
{
尝试
{
ps.AddScript(脚本);
收集结果=ps.Invoke();
Console.WriteLine(“输出:”);
foreach(结果中的var psObject)
{
Console.WriteLine(psObject);
}
Console.WriteLine(“非终止错误:”);
foreach(在ps.Streams.Error中记录错误)
{
Console.WriteLine(err.ToString());
}
}
捕获(RuntimeException ex)
{
Console.WriteLine(“终止错误:”);
控制台写入线(例如消息);
}
}
}
输出为:

无法加载ps1,因为在此服务器上禁用了运行脚本 系统。有关更多信息,请参阅


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

您可以尝试以下方法:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

PowerShell执行策略默认设置为受限。您可以使用Set-ExecutionPolicy cmdlet更改PowerShell执行策略。要在脚本外部运行,请将策略设置为RemoteSigned

PS C:>设置执行策略RemoteSigned 下面是PowerShell中四种不同执行策略的列表

受限–无法运行任何脚本。 AllSigned–只能运行由受信任的发布者签名的脚本。 RemoteSigned–下载的脚本必须由受信任的发布者签名。
无限制–可以运行所有Windows PowerShell脚本。

以管理模式打开PowerShell 并运行以下命令

Set ExecutionPolicy RemoteSigned


我认为您可以在管理模式或命令提示符下使用powershell

在管理员模式下打开windows powershell并运行以下命令及其工作瞧

设置ExecutionPolicy远程签名


在powershell或cmd中运行此代码

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

以下三个步骤用于修复此系统错误中禁用的运行脚本

步骤1:要解决此类问题,我们必须在管理员模式下启动power shell

步骤2:键入以下命令集ExecutionPolicy RemoteSigned 第三步:按Y键确认


有关详细信息,请访问以下内容

另一种解决方案是从目录C:\Users%username%\AppData\Roaming\npm\中删除ng.ps1,并在使用visual studio代码时清除npm缓存

  • 开放式终端
  • 运行命令:Set ExecutionPolicy-Scope CurrentUser-ExecutionPolicy Unrestricted
  • 然后运行命令progrator conf.js

  • 这与量角器测试脚本执行相关,我也遇到了同样的问题,问题是这样解决的。

    打开VS代码终端并运行以下脚本:

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
    

    您是否尝试将策略范围设置为本地计算机?“设置ExecutionPolicy-Scope LocalMachine-ExecutionPolicy Unrestricted'Run
    Get ExecutionPolicy-List
    ,并用结果编辑您的问题。此命令将向您显示不同的作用域及其ExecutionPolicy设置。恐怕这似乎不起作用,但要明确的是,这不是在命令行级别,因为我可以在远程桌面上运行而不会出现问题。很有效!!谢谢我有这个包裹的问题,我用你的回答解决了,谢谢!顺便说一句,这应该在Powershell中执行,而不是在windows的cmd中执行。@Tom:更改此命令后有任何安全问题吗?在完成更改或工作时,我们是否应该将其设置为受限或更安全的值??(读取当前值,并在工作完成时将其设置回原来的值?@HDJEMAI,我想这取决于您运行此程序的上下文<代码>无限制意味着您可以运行所有脚本。另一种选择是将执行策略设置为
    RemoteSigned
    ,因为这将允许
    允许本地脚本和远程签名脚本
    ,但根据应用程序及其执行的操作,这仍可能引发相同的错误。我认为您的方法在安全性方面是有效的,您可以随时使用
    Get executionploice
    阅读策略内容。虽然这是说范围是当前用户,所以我认为风险很小。我希望这有帮助。也适用于其他语言(现在编辑一个爱奥尼亚应用程序)!也为我工作,在VisualStudio代码终端内部运行,以便使用tsc命令运行Typescript。我在npm模块中遇到了相同的错误,这是我最喜欢的解决方案。如果您删除.ps1文件,它将很高兴使用另外两个脚本中的一个(例如Windows上的.cmd,另外一个没有扩展名),并且您不必更改您的安全配置。此答案中的指南与几年前发布的投票最多的答案中的指南有何不同?这应该是可接受的答案,因为其他答案可能不安全,并导致问题。最终解决了这个问题
    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted