Unblock-File

取消阻止已从 Internet 下载的文件。

语法

Unblock-File
       [-Path] <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Unblock-File
       -LiteralPath <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

说明

此 cmdlet 仅适用于 Windows 和 macOS 平台。

Unblock-File cmdlet 允许打开已从 Internet 下载的文件。 它将取消阻止已从 Internet 下载的 PowerShell 脚本文件,以便可以运行它们(即使 PowerShell 执行策略为 RemoteSigned 也是如此)。 默认情况下,将阻止这些文件以保护计算机免受不受信任的文件的威胁。

使用 Unblock-File cmdlet 之前,请查看该文件及其来源,并验证是否可将其安全打开。

在内部,Unblock-File cmdlet 移除 Zone.Identifier 备用数据流,该数据流的值为 3,指示它是从 Internet 下载的。

有关 PowerShell 执行策略的详细信息,请参阅 about_Execution_Policies

此 cmdlet 是在 Windows PowerShell 3.0 中引入的。

示例

示例 1:取消阻止一个文件

此命令取消阻止 PowerShellTips.chm 文件。

PS C:\> Unblock-File -Path C:\Users\User01\Documents\Downloads\PowerShellTips.chm

示例 2:取消阻止多个文件

此命令取消阻止 C:\Downloads 目录中名称包含“PowerShell”的所有文件。 在你已验证所有文件都安全之前,不要运行类似此命令的命令。

PS C:\> dir C:\Downloads\*PowerShell* | Unblock-File

示例 3:查找和取消阻止脚本

此命令展示了如何查找和取消阻止 PowerShell 脚本。

第一个命令将 Get-Item cmdlet 的 Stream 参数与 Zone.Identifier 流结合使用来获取文件。

第二个命令展示了当在执行策略为 RemoteSigned 的 PowerShell 会话中运行被阻止的脚本时,会发生什么情况。 RemoteSigned 策略会阻止你运行从 Internet 下载的脚本,除非它们已进行数字签名。

第三个命令使用 Unblock-File cmdlet 取消阻止该脚本,以便它可以在该会话中运行。

PS C:\> Get-Item * -Stream "Zone.Identifier" -ErrorAction SilentlyContinue
   FileName: C:\ps-test\Start-ActivityTracker.ps1

Stream                   Length
------                   ------
Zone.Identifier              26

PS C:\> C:\ps-test\Start-ActivityTracker.ps1
c:\ps-test\Start-ActivityTracker.ps1 : File c:\ps-test\Start-ActivityTracker.ps1 cannot
be loaded. The file c:\ps-test\Start-ActivityTracker.ps1 is not digitally signed. The script
will not execute on the system. For more information, see about_Execution_Policies.

At line:1 char:1
+ c:\ps-test\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

PS C:\> Get-Item C:\ps-test\Start-ActivityTracker.ps1 | Unblock-File

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-LiteralPath

指定要取消阻止的文件。 与 Path 不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号 (') 中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

类型:String[]
别名:PSPath, LP
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Path

指定要取消阻止的文件。 支持使用通配符。

类型:String[]
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:True

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

String

可以通过管道将文件路径传递给此 cmdlet。

输出

None

此 cmdlet 不返回任何输出。

备注

  • PowerShell 7.1 中添加了对 macOS 的支持。
  • Unblock-File cmdlet 仅在文件系统驱动器中有效。
  • Unblock-File 执行与文件资源管理器中“属性”对话框上的“取消阻止”按钮相同的操作。
  • 如果对未阻止的文件使用 Unblock-File cmdlet,该命令对未阻止的文件没有效果,并且该 cmdlet 不会生成错误。