Unblock-File
取消阻止从 Internet 下载的文件。
语法
Unblock-File
[-Path] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Unblock-File
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
此 cmdlet 仅适用于 Windows 和 macOS 平台。
cmdlet Unblock-File
允许打开从 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 脚本。
第一个命令使用带有 Zone.Identifier 流的 Get-Item cmdlet 获取文件的 Stream 参数。
第二个命令显示在执行策略为 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 之前进行确认。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
指定要取消阻止的文件。 与 Path 不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包含转义字符,请在) ('
将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
指定要取消阻止的文件。 支持使用通配符。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 此 cmdlet 未运行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
可以通过管道将文件路径传递给 Unblock-File
。
输出
None
此 cmdlet 将不生成任何输出。
备注
- PowerShell 7 中添加了对 macOS 的支持。
- cmdlet
Unblock-File
仅适用于文件系统驱动器。 Unblock-File
执行与 文件资源管理器 中“属性”对话框中的“取消阻止”按钮相同的操作。- 如果在
Unblock-File
未阻止的文件上使用 cmdlet,则命令对未阻止的文件没有影响,并且 cmdlet 不会生成错误。