2010-12-09 138 views
16

是否有一個清除我添加的當前powershell會話變量的命令行開關?清除powershell會話

我正在使用Add-Type命令行開關,並且出現錯誤「Can not add type。The type name already exists。」

回答

7

不幸的是,您無法卸載已加載到默認AppDomain中的.NET程序集,這是Add-Type所做的。您可以將類型或名稱空間重命名爲跛行,但在某些時候,您只需退出並重新啓動PowerShell。

這不是PowerShell的限制,因爲它是.NET/CLR的限制。您可以將.NET程序集加載到單獨的AppDomain中,稍後可以卸載它們,但是您必須自己對其進行編碼,並對您計劃在單獨的AppDomain中使用的類型施加限制。也就是說,這些類型需要通過.NET Remoting工作,因此它們必須從MarshByRefObject派生,或者它們必須是可序列化的(並且這適用於所有由它們的屬性引用的對象,依此類推)。

+4

但是有沒有任何命令來重置您的PowerShell會話? – Agzam 2012-08-17 18:51:21

6

一個可能的「解決辦法」:打開PowerShell窗口,然後運行腳本輸入powershell .\yourScriptHere.ps1

這將啓動當你的腳本退出其退出新的PowerShell實例。如果您想在新實例中「播放」,請將該調用更改爲powershell -NoExit .\yourScriptHere.ps1,腳本完成後新實例不會退出。當你需要再次重新啓動時,輸入exit,然後點擊「向上箭頭」鍵獲取前一個命令。所有腳本輸出將顯示在同一個窗口中。啓動一個新的powershell實例的開銷很低 - 在我的筆記本電腦上顯示小於1秒。