Windows PowerShell 获取脚本运行权限

微软希望用 PowerShell 替代老旧的 CMD,当前发布的新版 Win10 默认终端已经是 Windows PowerShell。相比CMD,PowerShell 的安全性更高,默认情况下是不允许运行脚本的 。

如果想要运行脚本该怎么办呢?我们可以手动获取脚本运行权限。

这是微软针对此问题发布的文档:About Execution Policies ,目前还没有中文版本,可以根据本文指导操作。

简介

PowerShell 运行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件,以便于阻止恶意脚本的运行。

更改运行策略的命令是:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

下面针对策略名称<PolicyName>和应用范围<scope>这两项分别介绍。

策略名称<PolicyName>

策略可以看做是 PowerShell 的权限,微软为 PowerShell 创建了7个运行策略:

  • AllSigned:可以运行脚本,但是要求脚本由受信任的发布者签名或者脚本在本机创建;对于未声明是否受信任的脚本,运行之前会提示用户;无法阻止已签名的恶意软件。
  • Bypass:放行一切,不会触发任何警告和提醒。
  • Default:默认策略,Windows 家用和专业版系统应用 Restricted 策略,Windows Server 应用 RemoteSigned 策略。
  • RemoteSigned:Windows Server 的默认策略,可以运行脚本,但是要求基本由受信任的发布者签名,配置文件应从网络上下载;本地编写的脚本不受限制,未签名的脚本需要用 Unblock-File 命令解除锁定。
  • Restricted:可以运行单条命令,但是阻止一切脚本。
  • Undefined:未定义的,默认应用 Restricted 策略。
  • Unrestricted:适用于非 Windows 平台,可以运行脚本,但运行非内网的脚本时向用户发出提醒。

应用范围<scope>

就像系统可以有多个用户和组一样,策略的应用范围分为:

  • MachinePolicy:由计算机组策略设置。
  • UserPolicy:由计算机组策略的当前用户设置。
  • Process:只影响当前 PowerShell 会话。
  • CurrentUser:应用于当前用户,设置存储在注册表 HKEY_CURRENT_USER 下。
  • LocalMachine:应用于本机的所有用户,设置存储在注册表 HKEY_LOCAL_MACHINE 下。

示例

Windows Server 默认使用 RemoteSigned 策略,无需更改。综合考虑策略的安全性,建议其他版本的 Windows 采用 RemotedSigned 策略,且将范围设定为当前用户:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

如果有其他需求,可以参照上文修改。

耕读君
耕读君

热爱科技,热爱折腾,有一个可爱的女儿

文章: 351

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注