在 Windows PowerShell 中运行脚本并设置执行策略

已完成

在开始修改 Windows PowerShell 脚本或创建自己的脚本之前,必须了解如何运行 Windows PowerShell 脚本。 你可能熟悉双击可执行文件或选择可执行文件,然后选择 Enter 来运行它,但该流程不适用于 Windows PowerShell 脚本。

许多脚本语言的问题之一是太容易意外运行脚本了。 用户可能会通过双击或选择脚本,然后选择 Enter 而意外运行脚本。 当隐藏文件扩展名,并且电子邮件包含恶意软件附件时,此操作尤其有问题。 例如,名为 receipt.txt.vbs 的附加文件会显示为 receipt.txt,用户会认为它是一个简单的文本文件而意外运行它。 由于运行脚本所需的操作,Windows PowerShell 脚本无需考虑此设置。

与文件资源管理器集成

为了使 Windows PowerShell 脚本更安全,.ps1 文件扩展名会与记事本相关联。 因此,当双击 .ps1 文件或将其选中,然后选择 Enter 时,它会在记事本中打开。 此设置意味着,用户不会被诱使通过双击或选择 Windows PowerShell 脚本,然后选择 Enter 来运行该脚本。

当右键单击 Windows PowerShell 脚本或激活其上下文菜单时,会有三个选项:

  • 打开。 此选项会在记事本中打开脚本。
  • 使用 PowerShell 运行。 此选项会运行脚本,但脚本完成后,Windows PowerShell 提示不保持在打开状态。
  • 编辑。 此选项会在 Windows PowerShell ISE 中打开脚本。

在大多数情况下,你希望在运行脚本时 Windows PowerShell 提示保持打开状态。 若要执行此任务,请从已打开的 Windows PowerShell 提示符运行脚本。

在 PowerShell 提示符下运行脚本

若要在命令提示符下运行可执行文件,输入文件名称就可在当前目录中运行它。 例如,当前目录为“C:\app”时,可以输入“app.exe”来运行“C:\app\app.exe”。 由于此流程不会搜索当前目录,因此不能使用它来运行 Windows PowerShell 脚本。

若要在 Windows PowerShell 提示符下运行 Windows PowerShell 脚本,可使用以下方法:

  • 输入脚本的完整路径,例如 C:\Scripts\MyScript.ps1
  • 输入脚本的相对路径,例如 \Scripts\MyScript.ps1
  • 引用当前目录,例如 \MyScript.ps1

脚本执行策略

可控制是否可在 Windows 计算机上运行 Windows PowerShell 脚本。 通过在计算机上设置执行策略来执行此任务。 计算机上的默认执行策略因操作系统版本而异。 若要确保当前配置,可以使用 Get-ExecutionPolicy cmdlet

执行策略的选项包括:

  • Restricted。 不允许运行任何脚本。
  • AllSigned。 仅当脚本经过数字签名后才能运行。
  • RemoteSigned。 下载的脚本只有在经过数字签名后才能运行。
  • Unrestricted。 可以运行所有脚本,但在运行下载但未签名的脚本时会显示确认提示。
  • 绕过。 运行所有脚本且不显示提示。

注意

设置脚本执行策略提供了一个安全网,可防止意外运行不受信任的脚本。 但是,始终可以重写执行策略。

可以使用 Set-ExecutionPolicy cmdlet 在计算机上设置执行策略。 但是,此设置很难跨多台计算机进行管理。 为多台计算机配置执行策略时,可以使用“计算机配置\策略\管理模板\Windows 组件\Windows PowerShell\打开脚本执行”组策略设置来替代本地设置

可以替代单个 Windows PowerShell 实例的执行策略。 如果公司策略要求将执行策略设置为 Restricted,但你仍然必须偶尔运行脚本,那么此设置会很有用。 若要替代执行策略,请使用 -ExecutionPolicy 参数运行 PowerShell.exe

Powershell.exe -ExecutionPolicy ByPass

如果已修改从 Internet 下载的脚本,该脚本仍具有将其标识为已下载文件的属性。 若要从脚本中移除该状态,请使用 Unblock-File cmdlet