绕过vs Unrestricted执行策略

时间:2018-05-16 12:13:21

标签: powershell executionpolicy

关于该主题的documentation仅提供:

  

不受限制。加载所有配置文件并运行所有脚本。如果您运行从Internet下载的未签名脚本,则会在运行之前提示您获得权限。

     

绕过。没有任何内容被屏蔽,也没有任何警告或提示。

对我而言,似乎两人会接受任何剧本,但令我惊讶的是并非如此。在某些情况下,旁路似乎会阻止执行。

那么,两者有什么区别?

2 个答案:

答案 0 :(得分:7)

根据评论,这些执行政策的行为方式应该没有特别的区别。但是,如果您在Bypass的单次运行期间临时更改执行政策,则会使用Powershell.exe,如果您希望永久更改设置,则会使用Unrestricted用于其中一个系统范围(MachinePolicy,UserPolicy,Process,CurrentUser,LocalMachine)的执行策略。

一些例子:

  1. 您所在的系统要将执行策略更改为永久不受限制,以便任何用户都可以毫无问题地运行任何PowerShell脚本。你会运行:

    Set-ExecutionPolicy Unrestricted
    
  2. 您所在的系统中,执行策略会阻止您的脚本,但您希望通过PowerShell运行它并在运行时忽略执行策略。你会运行:

    powershell.exe .\yourscript.ps1 -executionpolicy bypass
    
  3. 您在执行策略阻止脚本执行的系统上运行Powershell.exe,但您希望仅在您所在的交互式powershell.exe会话的生命周期内更改策略。您将运行:

     Set-ExecutionPolicy Bypass -Scope Process
    

答案 1 :(得分:0)

不同之处在于您对问题的描述。不受限制允许您沉迷于所有计算机都运行Windows,仅使用NTFS以及仅使用保存ADS的浏览器下载内容的错觉。实际上,如果您将Windows中的文件保存到未在服务器上使用NTFS的FAT文件系统或网络共享中,或者以其他方式(例如与git一起下载)进行下载,则Powershell会认为它是本地创建的,无论它来自何处。绕过不检查任何这一切,而是运行所有内容。不受限制应该警告您一些它认为可能很危险但无法可靠检查或确定的事情。使用任何使您喜欢的挠痒痒的东西。

PS> rm -path file.ps1 -stream zone.identifier
讨论...