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-File cmdlet,該指令對未被阻塞的檔案沒有影響,且 cmdlet 不會產生錯誤。