当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

作者:精品下载站 日期:2024-12-14 07:24:42 浏览:14 分类:玩电脑

PowerShell 初学者(第 5 部分):执行策略(ps1 文件)


在第四部分 PowerShell 初学者(第 4 部分):PowerShell 帮助 (Get-Help) 之后,我们到达最重要的主题之一:执行策略。但在此之前我们先看一下第四个练习的答案。我们还将快速回顾一下我们在第 4 部分中到目前为止所学到的内容。

该系列的所有部分都可以在这里找到:PowerShell 初学者(系列)

回顾(第 4 部分)

锻炼

在第四部分我问:

命令 start-process 的第四个帮助示例是什么?找到它后,在计算机上运行它!

嗯,有很多方法可以找到第四个例子。一种方法是(前提是您已下载本系列第四部分中的完整帮助)使用本地帮助文件:


Get-Help Start-Process -Examples

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

第四个示例显示如何启动记事本进程。将此命令复制并粘贴到控制台中,然后使用 PowerShell 运行记事本!

另一种选择是使用在线帮助。


Get-Help Start-Process -Online

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

第三个选项是使用详细参数,它向您展示的内容比示例多得多。


Get-Help Start-Process -Detailed

第四个选项是使用完整帮助。


Get-Help Start-Process -Full

概括


这些示例是通过实践学习 PowerShell 的绝佳来源。它们可以通过使用在线帮助或使用示例参数来显示。

完整帮助显示整个帮助主题。详细帮助显示了详细的参数说明和示例。


PowerShell 执行策略

现在我们来到第五部分,这部分是关于 PowerShell 执行策略的。执行政策到底是什么?您从互联网下载了一个脚本并想要执行它。该脚本具有扩展名。 ps1.红色的字母充满了屏幕。红色通常不好。黄色可以,但是红色呢?

几乎每本 PowerShell 书籍都以两个基本主题开头:使用 PowerShell 帮助(我们已在第四部分中讨论过此问题)和名为 ExecutionPolicy 的安全功能的存在。这两个主题对于 PowerShell 入门都是必不可少的。 PowerShell 执行策略阻止执行 ps1 脚本。出于安全原因。

默认情况下,Windows 10 会阻止执行 PowerShell 脚本文件。 Windows Server 2012/2016 默认允许执行自制脚本,但所有其他脚本必须由受信任的发布者签名。

ps1 文件是什么?

PS1 文件是 PowerShell 脚本文件。脚本是一个指令程序。就像cmd中的批处理文件一样。您当然还记得那些好的旧批处理文件。

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

以下是 PowerShell 脚本的示例。

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

到目前为止我们学到了什么?


处理脚本时请注意 PowerShell 执行策略。执行策略可能会阻止您运行 PowerShell 脚本。 PS1 文件是 PowerShell 脚本文件。


执行策略默认设置

Windows 客户端版本 (Windows 8 | 10)

Windows 10 的默认值是“受限”。也就是说,不允许使用任何脚本,甚至是您自己的脚本。您可以使用命令 Get-ExecutionPolicy 检查设置。


Get-ExecutionPolicy

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

Windows Server 版本(Windows Server 2012 | 2016)

Windows Server 版本的默认值为 RemoteSigned。这意味着您可以运行自己的脚本以及来自受信任发布者的脚本。

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

审查


客户端版本和服务器版本之间存在差异。在客户端版本上,默认情况下不允许执行脚本。在服务器版本上,默认情况下您可以运行自己的脚本和来自受信任发布者的数字签名脚本。 Get-ExecutionPolicy 显示状态。


创建 ps1 文件

嗯,这个系列是以实践为导向的。因此,让我们在 PowerShell 中创建一个 ps1 文件,该文件允许我们使用执行策略。

首先我们使用 New-Item 创建一个新文件。


New-Item -ItemType File -Path C:\Temp -Name ps_script.ps1

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

现在让我们将命令放入文件中。假设我们想用 Get-Date 调用日期。为此,我们使用“添加内容”命令。


Add-Content -Path C:\Temp\ps_script.ps1 -Value 'Get-Date'

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

现在让我们使用 Get-Content 快速检查一下是否一切顺利。


Get-Content -Path C:\Temp\ps_script.ps1

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

美好的。我们有一个示例脚本。该脚本运行 Get-Date。

到目前为止我们学到了什么?


New-Item 创建一个 ps1 文件。内容命令添加、删除和修改内容。


玩转执行策略

有了这个简单的示例文件,我们现在就可以开始播放了。让我们来探讨一下这种行为。执行策略设置为“受限”。走着瞧吧。注意白线。

…无法加载,因为该系统上禁用了运行脚本…

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

改变执行政策

我现在将使用 Set-ExecutionPolicy 将执行策略更改为 RemoteSigned。


Set-ExecutionPolicy RemoteSigned

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

...然后再次运行脚本...

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

惊喜……惊喜,这有效。

审查


Set-ExecutionPolicy 更改策略的行为。限制性最强的设置是“受限”(默认 Windows 10)。 RemoteSigned(默认 Windows Server)允许您执行您自己的脚本以及来自受信任发布者的脚本。


执行政策价值观

RemoteSigned 是 Windows Server 2012/2016 上的默认设置,Restricted 是 Windows 8/10 上的默认设置。

从我的角度来看,四个最重要的执行参数是:

  • 受限:不能执行任何脚本。
  • AllSigned:所有脚本都必须由受信任的发布者(包括您自己的发布者)签名。
  • 远程签名:来自 Internet 的所有脚本都必须由受信任的发布者签名。
  • 无限制:运行所有脚本。

还有更多。您还可以定义此值的范围,可以在此处找到:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-5.1

有关数字签名的更多信息,请参阅我的博客文章如何对 PowerShell 脚本进行数字签名

绕过执行策略

是的,你没看错。绕过该政策是可能的。有很多方法可以做到这一点。我将展示其中之一。请注意,执行策略设置为“受限”。


powershell.exe -ExecutionPolicy Bypass -Command "c:\temp\ps_script.ps1"

[玩转系统] PowerShell 初学者(第 5 部分):执行策略(ps1 文件)

记住:

执行策略不是限制用户操作的安全系统。用户可以轻松规避该政策。相反,执行策略帮助用户建立基本规则并防止他们意外违反这些规则

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1

审查


最重要的执行策略值是 Restricted、Unrestricted、RemoteSigned 和 AllSigned。执行策略不是安全系统。用户可以轻松绕过执行策略。


这里有一个很棒的链接,展示了绕过执行策略的 15 种方法:

https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/

锻炼

今天就这样。这是下一部分的练习。

更改所有来自 Internet 的脚本都必须签名的执行策略。尝试运行您自己创建的脚本。然后会发生什么?

解决方案可以在下一部分中找到。

下一篇文章见 PowerShell 初学者(第 6 部分):PowerShell 配置文件和 ISE


Patrick Gruenauer,PowerShell MVP

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯