Unblock-File
將從網際網路下載的檔案解除封鎖。
Syntax
Unblock-File
[-Path] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Unblock-File
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdlet Unblock-File
可讓您開啟從因特網下載的檔案。 它會解除封鎖從因特網下載的PowerShell腳本檔案,以便執行這些檔案,即使PowerShell執行原則為 RemoteSigned也一樣。 這些檔案預設會被封鎖,以保護電腦免於不受信任檔案的損害。
使用 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:將多個檔案解除封鎖
此命令會解除封鎖目錄中名稱包含 「PowerShell」 的所有檔案 C:\Downloads
。 除非您已確認所有檔案都是安全的,否則請勿執行這類命令。
PS C:\> dir C:\Downloads\*PowerShell* | Unblock-File
範例 3:尋找指令碼並將其解除封鎖
此命令示範如何尋找和解除封鎖PowerShell腳本。
第一個命令會使用 Get-Item Cmdlet 的 Stream 參數搭配 Zone.Identifier 數據流取得檔案。
第二個命令顯示當您在執行原則為 RemoteSigned 的 PowerShell 會話中執行封鎖的腳本時,會發生什麼情況。 RemoteSigned 原則會防止您執行從網際網路下載的指令碼,除非指令碼經過數位簽署。
第三個命令會 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 不會產生任何輸出。
備註
此 Cmdlet 僅適用於 Windows 平臺。
- Cmdlet
Unblock-File
僅適用於文件系統磁碟驅動器。 Unblock-File
會執行與 [屬性] 對話框上 [解除封鎖] 按鈕相同的作業,檔案總管。- 如果您在
Unblock-File
未封鎖的檔案上使用 Cmdlet,命令不會影響解除封鎖的檔案,而且 Cmdlet 不會產生錯誤。