powershell脚本运行报错


当你有一个ps1文件,但是在你运行可能会出现以下错误。

根据提示,我们可以得知该系统上进制运行脚本,巴拉巴拉,请参考……

这怎么行呢!万恶的强迫症,应该是我们的策略的问题哈。网上找文章眯一眼。我们的策略可能是Restricted(默认策略)。

我们在终端输入

1
set-executionpolicy

可以查看当前的策略配置。

在分析策略之前,我们有必要先了解一下powershell脚本执行策略。

1
https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.3

【PowerShell 执行策略】

AllSigned
  • 脚本可以运行。

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

  • 从尚未分类为受信任或不受信任的发布者运行脚本之前,会提示你。

  • 运行已签名但恶意脚本的风险。

Bypass
  • 不阻止任何操作,并且没有任何警告或提示。
  • 此执行策略适用于 PowerShell 脚本内置于较大应用程序的配置,或针对 PowerShell 是具有自身安全模型的程序基础的配置。
Default
  • 设置默认执行策略。

  • Restricted 适用于 Windows 客户端的 。

  • 适用于 Windows 服务器的 RemoteSigned

RemoteSigned
  • Windows Server 计算机的默认执行策略。

  • 脚本可以运行。

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

  • 不需要在本地计算机上编写且未从 Internet 下载的脚本上使用数字签名。

  • 如果未阻止脚本(例如使用 cmdlet),则运行从 Internet 下载且未签名的 Unblock-File 脚本。

  • 运行来自 Internet 以外的源的未签名脚本以及可能是恶意的已签名脚本的风险。

Restricted
  • Windows 客户端计算机的默认执行策略。

  • 允许单个命令,但不允许脚本。

  • 阻止运行所有脚本文件,包括格式化和配置文件 () .ps1xml 、模块脚本文件 (.psm1) ,以及 PowerShell 配置文件 () .ps1

Undefined
  • 当前范围内没有设置执行策略。
  • 如果所有范围内的执行策略都是 Undefined,则有效的执行策略 Restricted 适用于 Windows 客户端, RemoteSigned 适用于 Windows Server。
Unrestricted
  • 非 Windows 计算机的默认执行策略,无法更改。

  • 未签名的脚本可以运行。 存在运行恶意脚本的风险。

  • 在运行不来自本地 Intranet 区域的脚本和配置文件之前警告用户。

注意:这个时候,我们就可以根据自身需求给其配置策略了,这里我们要注意了,不要为了省事,把权限开到最大,这样会比较危险。

1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

回复Y就好了哈,糟糕,踩坑里了。

需要管理员权限,我们使用管理员运行powershell,再试试有没有毛病。

我们再试试脚本运行是否会报错,这里铁子不需要眨眼,走个,没毛病。


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