问题
Add-Type支持将C#、VB、JavaScript、dll等其他编程语言添加为新的 .NET 类型1,其扩展性极高。
但需要注意到,Add-Type的类型是无法移除的,且同一会话窗口下一旦加载过了,重复运行只会抛出该 .NET 类型已存在的错误。
解决方案
参考StackOverflow提问2中 x0n 的回答,已加载的类型只有在会话关闭后才会注销。Charlie Kilian 与 Start-Automating 巧妙使用Job类型来启动一个额外的线程,并使用新的类型,实现运行结束后自动注销。代码如下:
Start-Job -ScriptBlock {
Add-Type -path 'my.dll'
$myObj = New-Object My.MyTestClassName
$result = $myObj.TestMethod
$result
} | Receive-Job -Wait -AutoRemoveJob

本文探讨了PowerShell中Add-Type命令的使用,包括如何添加C#、VB、JavaScript、dll等类型的.NET资源。然而,一旦加载,这些类型无法在当前会话中移除,重复加载会引发错误。文章提供了通过创建额外线程并在运行后自动注销类型的解决方案。

1930

被折叠的 条评论
为什么被折叠?



