2015-11-09 28 views
1

我正在使用Carbon的Powershell模塊進行一些工作。當我將文件夾移動到不同的機器上時,內部的腳本被標記並阻止執行,直到我解除阻止(這很好)。當我執行以下操作:解鎖文件 - 爲什麼我需要打開一個新的會話?

gci .\Carbon -Recurse | Unblock-File 

我仍然無法導入模塊,直到我創建新的Powershell會話。這時文件肯定是暢通無阻的,但是在創建新會話之前,我仍然收到相同的錯誤。

我已經閱讀了一些technet文章,他們說,你只需要關閉並打開Powershell來解決它,但沒有理由爲什麼這需要發生。

+0

也許你可以將流數據作爲workaroud來擦除? 'gci。\ Carbon -Recurse | set-Content $ _ -Stream zone.identifier -Value''' –

+0

雖然這種方法也可以解除阻塞文件,但它仍然需要我創建一個新的PS會話。 – jmct

回答

0

這實際上可以追溯到PowerShell所基於的.Net框架。你基本上將一個新的程序集加載到進程中。被阻止的文件被認爲是「遠程」文件,默認情況下,.net未設置爲加載它們。

How the Runtime Locates Assemblies

  • Checks whether the assembly name has been bound to before,如果是這樣,使用先前加載的組件。
  • 的事情是,這一步緩存「負面」裝載以及(在我的經驗,至少,從試圖加載其他組件)。 .Net在加載程序後沒有辦法卸載程序集,所以除了重新啓動程序之外別無選擇。

    相關問題