共用方式為


Unblock-File

解除封鎖從因特網下載的檔案。

語法

Unblock-File
       [-Path] <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Unblock-File
       -LiteralPath <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

Unblock-File Cmdlet 可讓您開啟從因特網下載的檔案。 它會解除封鎖從因特網下載的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 之前,提示您進行確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-LiteralPath

指定要解除封鎖的檔案。 不同於 PathLiteralPath 參數的值會與輸入時完全相同。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它(')。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。

類型:String[]
別名:PSPath, LP
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

輸入

String

您可以使用管線將檔案路徑傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會傳回任何輸出。

備註

  • Unblock-File Cmdlet 僅適用於文件系統磁碟驅動器。
  • Unblock-File 執行與 [檔案總管] 中 [屬性] 對話方塊上的 [解除封鎖] 按鈕相同的作業。
  • 如果您在未封鎖的檔案上使用 Unblock-File Cmdlet,命令對解除封鎖的檔案沒有任何作用,而且 Cmdlet 不會產生錯誤。