powershell-执行策略


执行策略

"Restricted"是默认策略。

    Restricted
        - 默认执行策略。

        - 允许单个命令运行,但不能运行脚本。

        - 阻止所有脚本文件的运行,包括格式和配置文件 (.ps1xml)、模块脚本文件 (.psm1) 
          和 Windows PowerShell 配置文件 (.ps1)。

    AllSigned
        - 可以运行脚本。

        - 要求所有脚本和配置文件由可信发布者签名,包括在本地计算机上编写的脚本。

	    - 在运行来自尚未分类为可信或不可信发布者的脚本之前进行提示。

        - 运行来自 Internet 以外的源的未签名脚本及已签名但有恶意的脚本存在风险。
  
    RemoteSigned
        - 可以运行脚本。

        - 要求可信发布者对从 Internet(包括电子邮件和即时消息程序)下载的脚本和配置文件
          进行数字签名。

	    - 不要求对已经运行和已在本地计算机编写的脚本(不是从 Internet 下载的脚本)进行数
	      字签名。

        - 面临运行已签名但有恶意的脚本带来的风险。

    Unrestricted
        - 可以运行未签名脚本。(面临运行恶意脚本所带来的风险。)

        - 在运行从 Internet 下载的脚本和配置文件之前警告用户。

    Bypass
        - 不阻止任何执行项,不显示警告和提示。

        - 此执行策略设计用于两种配置:一种是 Windows PowerShell 脚本内置于一个较大的
          应用程序中;一种是 Windows PowerShell 成为拥有自身安全模型的某个程序的基础。

    Undefined
        - 当前作用域中未设置执行策略。

        - 如果所有作用域中的执行策略为 Undefined,则有效执行策略为 Restricted,该策略
          是默认执行策略。

常用命令

命令 作用
get-executionpolicy 获取当前执行策略
get-executionpolicy -list 获取对当前会话起作用的所有执行策略
并按优先级顺序显示它们
get-executionpolicy -scope CurrentUser 获取用于当前用户作用域的执行策略
Set-ExecutionPolicy < policy-name> 更改执行策略
Set-ExecutionPolicy < policy-name> -scope < scope> 在特定作用域中设置执行策略
set-executionpolicy RemoteSigned 允许运行本地未签名的脚本
set-executionpolicy Undefined 删除本地计算机所有用户的执行策略
如果没有在任何作用域中设置执行策略,
则有效执行策略为 Restricted,该策略是默认执行策略

可以使用 PowerShell.exeExecutionPolicy 参数为新的 Windows PowerShell 会话设置执行策略。该执行策略仅对当前会话和子会话起作用。设置的执行策略不存储在注册表中,而是存储在 $PSExecutionPolicyPreference 环境变量中。当设置了策略的会话关闭时,将删除该变量。
例如:powershell.exe -executionpolicy -allsigned
在会话过程中,为该会话设置的执行策略优先于在注册表中为本地计算机或当前用户设置的执行策略。但是,它不会优先于使用组策略设置设置的执行策略。


参考:官方文档


文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录