Unblock-File

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

语法

ByPath (默认值)

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

ByLiteralPath

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:取消阻止多个文件

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

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

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

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

第一个命令使用 cmdlet 的 Get-ItemStream 参数和 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
默认值:False
支持通配符:False
不显示:False
别名:Cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-LiteralPath

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

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False
别名:PSPath, LP

参数集

ByLiteralPath
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Path

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

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

ByPath
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。

输入

String

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

输出

None

此 cmdlet 不返回任何输出。

备注

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