我运行这段代码来从ASP执行PowerShell代码。网络应用程序:

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

但是我得到一个错误:

无法加载.ps1,因为在上禁用了脚本的执行 这个系统。详情请参见“get-help about_signing”。

同样的代码可以在命令提示符或windows (windows窗体)应用程序中正常运行。


由于执行策略,您的脚本被阻止执行。

您需要以管理员身份运行PowerShell,并将客户端PC上的PowerShell设置为“无限制”。你可以通过调用Invoke来实现:

Set-ExecutionPolicy Unrestricted

问题是执行策略是基于每个用户设置的。每次运行应用程序时,您都需要在应用程序中运行以下命令以使其工作:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

可能有一种方法来设置ASP。NET用户,但这种方式意味着您不会开放整个系统,而只是您的应用程序。

(源)


你需要执行Set-ExecutionPolicy:

Set-ExecutionPolicy Unrestricted <-- Will allow unsigned PowerShell scripts to run.

Set-ExecutionPolicy Restricted <-- Will not allow unsigned PowerShell scripts to run.

Set-ExecutionPolicy RemoteSigned <-- Will allow only remotely signed PowerShell scripts to run.

在某些情况下,您可以按照其他答案中建议的步骤,验证执行策略是否设置正确,但仍然会导致脚本失败。如果发生这种情况,您可能在一台64位机器上,同时拥有32位和64位版本的PowerShell,并且故障发生在没有设置Execution Policy的版本上。该设置不能应用于两个版本,因此必须显式地设置两次。

在Windows目录中查找System32和SysWOW64。

对每个目录重复这些步骤:

导航到WindowsPowerShell\v1.0并启动powershell.exe 检查ExecutionPolicy的当前设置: Get-ExecutionPolicy附些 为你想要的级别和范围设置ExecutionPolicy,例如: Set-ExecutionPolicy -Scope LocalMachine无限制

注意,您可能需要以管理员身份运行PowerShell,具体取决于您试图为其设置策略的范围。


我有一个类似的问题,并注意到Windows Server 2012上的默认cmd正在运行x64。

在Windows 7、Windows 8、Windows Server 2008 R2或Windows Server 2012操作系统下,以Administrator身份执行以下命令:

x86

打开C:\Windows\SysWOW64\cmd.exe 执行命令:powershell Set-ExecutionPolicy remotessigned

x64

打开C:\Windows\system32\cmd.exe 执行powershell Set-ExecutionPolicy remotessigned命令

您可以检查模式使用

在CMD中:echo %PROCESSOR_ARCHITECTURE% 在Powershell中:[Environment]::Is64BitProcess

我希望这对你有所帮助。


试试这个:

Set-ExecutionPolicy -scope CurrentUser Unrestricted

如果您在运行json-server时遇到此错误,并登录到此页面。 另一种解决方案是直接使用NPX运行它,而不安装它。

NPX json-server——查看db.json