是否有一个命令行开关清除我添加的当前powershell会话变量?
我正在使用Add-Type命令行开关,我收到错误"无法添加类型。类型名称已存在。"
答案 0 :(得分:7)
不幸的是,您无法卸载已加载到默认AppDomain中的.NET程序集,这是Add-Type的作用。您可以重命名类型或命名空间,但在某些时候您只需要退出并重新启动PowerShell。
这不是PowerShell限制,因为它是.NET / CLR限制。您可以将.NET程序集加载到单独的AppDomain中,以后可以卸载,但是您必须自己编写代码,并且它会对您计划在单独的AppDomain中使用的类型施加限制。也就是说,这些类型需要通过.NET Remoting来工作,因此它们必须从MarshByRefObject派生,或者它们必须是可序列化的(这适用于它们的属性引用的所有对象,依此类推在对象图上)。 p>
答案 1 :(得分:6)
可能的“解决方法”:打开PowerShell窗口然后运行脚本输入powershell .\yourScriptHere.ps1
这将启动一个新的PowerShell实例,该实例将在您的脚本退出时退出。如果要在新实例中“播放”,则将调用更改为powershell -NoExit .\yourScriptHere.ps1
,并且在脚本完成时新实例不会退出。当您需要重新启动时输入exit
并点击“向上箭头”键以获取上一个命令。所有脚本输出都将出现在同一窗口中。启动新的PowerShell实例的开销很低 - 在我的笔记本电脑上显示不到1秒。