我运行这段代码来从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窗体)应用程序中正常运行。
在某些情况下,您可以按照其他答案中建议的步骤,验证执行策略是否设置正确,但仍然会导致脚本失败。如果发生这种情况,您可能在一台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
我希望这对你有所帮助。