Unblock-File
解除從網路下載的檔案。
語法
ByPath (預設值)
Unblock-File
[-Path] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Unblock-File
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
此指令只適用於 Windows 和 macOS 平台。
這個 Unblock-File cmdlet 可以讓你打開從網路下載的檔案。 它會解除從網路下載的 PowerShell 腳本檔案,即使執行政策是 遠端簽署,也能執行。 預設情況下,這些檔案會被封鎖,以保護電腦免受不受信任檔案的侵害。
在使用 Unblock-File cmdlet 之前,請先檢查檔案及其來源,並確認它是否安全可以開啟。
在內部,指令 Unblock-File 檔會移除 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 腳本。
第一個指令使用 cmdlet get Get-Item 檔案中帶有 Zone.Identifier 串流的 Stream 參數。
第二個指令顯示當你在執行策略為 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 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 參見 |
參數集
(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指令檔只在檔案系統磁碟機中運作。 -
Unblock-File執行與檔案總管中屬性對話框中解封按鈕相同的操作。 - 如果你在未被封鎖的檔案上使用
Unblock-Filecmdlet,該指令對未被阻塞的檔案沒有影響,且 cmdlet 不會產生錯誤。