gpt4 book ai didi

powershell - PowerShell 2 模块中的类型

转载 作者:行者123 更新时间:2023-12-03 09:56:44 24 4
gpt4 key购买 nike

我已经实现了一个小的 PowerShell 模块,它带来了一个自定义类型。我在 .psm1 中定义了类型文件作为 C# 类并添加了 Add-Type .现在,当我添加模块并再次删除它时,类型仍然存在,这可能不太正确(例如,它会阻止重新添加模块)。 Remove-Module 的文档声明模块加载的程序集中定义的类型也被卸载。但是我的模块没有引入程序集,只是源代码形式的一种微小的单一类型。

我可以将类型放入它自己的 DLL 中并将其标记为要加载到模块 list 中的程序集,但我喜欢当前所有源代码的可见性。与模块一起分发 DLL 可能会让人怀疑它为什么需要一个可执行文件。

卸载模块时,我可以用某种方式删除类型吗?或者我应该忽略 Add-Type 的潜在错误吗?至少能够从 session 中删除后重新添加模块?我宁愿避免在其中放置一个 DLL(对于那个小模块来说,无论如何可能是矫枉过正)。

最佳答案

Remove-Module 上的文档还说组件没有卸载。这是 .NET 和 CLR 的一个基本问题。一旦程序集被加载到 AppDomain 中,它就不能被卸载。因此,创建自己的 DLL(托管程序集)不会有帮助。

我不确定除了避免使用 Add-Type 和使用 new-object psobject -prop @{...} 创建自定义类型之外,您还能做些什么。和 $obj.psobject.typenames.insert(0, 'newtypename') .

关于powershell - PowerShell 2 模块中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com