Unblock-File (Microsoft.PowerShell.Utility)
Unblock-File
- 模块 :
- Microsoft.PowerShell.Utility
取消阻止从 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 执行策略是远程签名。默认情况下,这些文件会被阻止,以保护计算机免受不受信任的文件的侵害。
在使用 Unblock-File cmdlet 之前,请检查文件及其来源并验证是否可以安全打开。
在内部,Unblock-File cmdlet 会删除 Zone.Identifier 备用数据流,该数据流的值为 3,表示它是从互联网。
有关 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
- 位置:
命名
- 默认值:
False
- 必需的:
False
- 接受管道输入:
False
- 接受通配符:
False
-LiteralPath
指定要取消阻止的文件。与 Path 不同,LiteralPath 参数的值完全按照键入的方式使用。没有字符被解释为通配符。如果路径包含转义字符,请将其括在单引号 (') 中。单引号告诉 PowerShell 不要将任何字符解释为转义序列。
- 类型 :
String[]
- 别名:
PSPath, LP
- 位置:
命名
- 默认值:
-
None
- 必需的:
True
- 接受管道输入:
True
- 接受通配符:
False
-Path
指定要取消阻止的文件。支持通配符。
- 类型 :
String[]
- 位置:
0
- 默认值:
None
- 必需的:
True
- 接受管道输入:
False
- 接受通配符:
True
-WhatIf
显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。
- 类型 :
SwitchParameter
- 别名:
wi
- 位置:
命名
- 默认值:
False
- 必需的:
False
- 接受管道输入:
False
- 接受通配符:
False
输入
字符串
您可以通过管道将文件路径传递给此 cmdlet。
输出
无
此 cmdlet 不返回任何输出。
笔记
- PowerShell 7 中添加了对 macOS 的支持。
Unblock-Filecmdlet 仅适用于文件系统驱动器。Unblock-File执行与文件资源管理器中属性 对话框中的Unblock 按钮相同的操作。- 如果对未阻止的文件使用
Unblock-Filecmdlet,则该命令对未阻止的文件没有影响,并且 cmdlet 不会生成错误。