PowerShell说“在这个系统上禁止执行脚本。”
我试图运行一个.cmd文件,从命令提示符处调用PowerShell脚本,并且出现以下错误:
Management_Install.ps1无法加载,因为在此系统上禁用了脚本的执行。
我已经运行set-executionpolicy unrestricted
,当我从PowerShell运行get-executionpolicy
,我unrestricted
返回。
//从Powershell输出
PS C: Users Administrator> get-executionpolicy
无限制
//从DOS输出
C: Projects Microsoft.Practices.ESB Source Samples Management Portal Install Scr
ipts> powershell。 Management_Install.ps1 1
警告:运行x86 PowerShell ...
文件C: Projects Microsoft.Practices.ESB Source Samples Management Portal Install Scripts Management_Install.ps1无法加载,因为在此系统上禁用了脚本的执行。 有关更多详细信息,请参阅“get-help about_signing”。
在线:1个字符:25
。 Management_Install.ps1 <<<< 1
CategoryInfo:NotSpecified:(:) [],PSSecurityException
FullyQualifiedErrorId:RuntimeException
C: Projects Microsoft.Practices.ESB Source Samples Management Portal Install Scripts>暂停
按任意键继续 。 。 。
该系统是Windows Server 2008 R2。
我究竟做错了什么?
如果您使用的是Windows Server 2008 R2,则需要有一个x64和x86版本的PowerShell,两者都必须设置其执行策略。 您是否在两台主机上都设置了执行策略?
作为管理员,您可以通过在PowerShell窗口中键入以下内容来设置执行策略:
Set-ExecutionPolicy RemoteSigned
有关更多信息,请参阅使用Set-ExecutionPolicy Cmdlet。
您可以通过在运行PowerShell时添加-ExecutionPolicy ByPass
来绕过此策略
powershell -ExecutionPolicy ByPass -File script.ps1
我有类似的问题,并指出Windows Server 2012上的默认cmd
运行的是x64。
对于Windows 7 , Windows 8 , Windows Server 2008 R2或Windows Server 2012 ,以管理员身份运行以下命令:
x86(32位)
打开C:WindowsSysWOW64cmd.exe
运行命令powershell Set-ExecutionPolicy RemoteSigned
x64(64位)
打开C:Windowssystem32cmd.exe
运行命令powershell Set-ExecutionPolicy RemoteSigned
您可以使用检查模式
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
参考文献:
MSDN - Windows PowerShell执行策略
Windows - 32位和64位目录的说明
上一篇: PowerShell says "execution of scripts is disabled on this system."
下一篇: PowerShell script to return versions of .NET Framework on a machine?