iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
自我挑戰組

Powershell 入门系列 第 19

Powershell 入门之 policy

今天我们来看看 powershell 的执行策略。

在默认情况下,你自己编写的脚本,或者从网上找的第三方的脚本,出于安全的原因,系统会禁止你运行。所有很多情况下,我们需要更改 powershell 的执行策略,以便我们运行自己编写的脚本。

powershell 一共支持以下几种策略可用:
AllSigned

  • 可以运行脚本,但脚本必须被受信任的机构签名。
    Bypass
  • 可以运行脚本,并且没有任何警告或提示。
    Default
    默认的执行策略。
  • Windows 客户端是 Restricted。
  • Windows Server 是 RemoteSigned 。
    RemoteSigned
  • 从别人那里获取的脚本,如 Internet 下载,别人通过电子邮件发送等,需要数字签名才可以运行。对于在本地计算机上编写的脚本,则不需要。
    Restricted
  • 阻止运行所有脚本以及脚本文件,包括格式设置和配置文件 (.ps1xml) 、模块脚本文件 (.psm1) 和 PowerShell 配置文件 (.ps1) 。
    Undefined
  • 没有设置执行策略(默认策略生效)。
    Unrestricted
  • 可以运行所有脚本。但是如果运行的脚本不在本地,则会在运行之前会有警告通知用户。

查看系统当前配置的策略:

PS C:\WINDOWS\system32> Get-ExecutionPolicy
Restricted

更改执行策略:

PS C:\WINDOWS\system32> Set-ExecutionPolicy Unrestricted

执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“N”): y

执行策略会分布在不同的作用域,查看不同作用于的策略:

PS C:\WINDOWS\system32> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    Unrestricted

我们可以发现,默认情况下,更改的只是 LocalMachine 作用域下的策略。

如果我们需要更改其他作用域的策略,则需要使用:

PS C:\WINDOWS\system32> Set-ExecutionPolicy Unrestricted -Scope CurrentUser

执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“N”): y
PS C:\WINDOWS\system32> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    Unrestricted
 LocalMachine    Unrestricted

上一篇
Powershell 入门之动态参数
下一篇
Powershell 入门之在 powershell 会话中运行我们自己的 foundation
系列文
Powershell 入门21

尚未有邦友留言

立即登入留言