Unblock-File
解除封鎖從因特網下載的檔案。
語法
Unblock-File
[-Path] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Unblock-File
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
解除封鎖檔案 Cmdlet 可讓您開啟從因特網下載的檔案。 它會解除封鎖從因特網下載的PowerShell腳本檔案,讓您可以執行它們,即使PowerShell執行原則 RemoteSigned也一樣。 根據預設,系統會封鎖這些檔案,以保護計算機免於不受信任的檔案。
使用 Unblock-File Cmdlet 之前,請先檢閱檔案及其來源,並確認其可安全地開啟。
在內部,解除封鎖檔案 Cmdlet 會移除 Zone.Identifier 替代數據流,其值為 “3”,表示它已從因特網下載。
如需 PowerShell 執行原則的詳細資訊,請參閱 about_Execution_Policies。
此 Cmdlet 已在 Windows PowerShell 3.0 中引進。
範例
範例 1:解除封鎖檔案
PS C:\> Unblock-File -Path C:\Users\User01\Documents\Downloads\PowerShellTips.chm
此命令會解除封鎖 PowerShellTips.chm 檔案。
範例 2:解除封鎖多個檔案
PS C:\> dir C:\Downloads\*PowerShell* | Unblock-File
此命令會解除封鎖 C:\Downloads 目錄中名稱包含 “PowerShell” 的所有檔案。 在您確認所有檔案都安全之前,請勿執行像這樣的命令。
範例 3:尋找和解除封鎖腳本
The first command uses the *Stream* parameter of the Get-Item cmdlet get files with the Zone.Identifier stream.Although you could pipe the output directly to the **Unblock-File** cmdlet (Get-Item * -Stream "Zone.Identifier" -ErrorAction SilentlyContinue | ForEach {Unblock-File $_.FileName}), it is prudent to review the file and confirm that it is safe before unblocking.
PS C:\> Get-Item * -Stream "Zone.Identifier" -ErrorAction SilentlyContinue
FileName: C:\ps-test\Start-ActivityTracker.ps1
Stream Length
------ ------
Zone.Identifier 26
The second command shows what happens when you run a blocked script in a PowerShell session in which the execution policy is **RemoteSigned**. The RemoteSigned policy prevents you from running scripts that are downloaded from the Internet unless they are digitally signed.
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
The third command uses the **Unblock-File** cmdlet to unblock the script so it can run in the session.
PS C:\> Get-Item C:\ps-test\Start-ActivityTracker.ps1 | Unblock-File
此命令示範如何尋找並解除封鎖PowerShell腳本。
參數
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-LiteralPath
指定要解除封鎖的檔案。 不同於 Path,LiteralPath 參數的值會與輸入時完全相同。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。
類型: | String[] |
別名: | PSPath |
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 |
輸入
您可以使用管線將檔案路徑傳送至 [解除封鎖檔案]。
輸出
None
此 Cmdlet 不會產生任何輸出。
備註
- 解除封鎖檔案 Cmdlet 僅適用於文件系統磁碟驅動器。
- [解除封鎖檔案] 在 [檔案總管] [屬性] 對話方塊中,執行與 [解除封鎖] 按鈕相同的作業。
- 如果您在未封鎖的檔案上使用 Unblock-File Cmdlet,則命令對解除封鎖的檔案沒有任何作用,而且 Cmdlet 不會產生錯誤。