gpt4 book ai didi

.net - Powershell 卸载模块...完全

转载 作者:行者123 更新时间:2023-12-03 07:48:28 35 4
gpt4 key购买 nike

我正在调试 Powershell 项目。我正在使用 Import-Module 从我的 C# dll 加载 PS 模块,一切正常。尽管调用 Remove-Module 并不会完全卸载模块,因为 DLL 仍处于锁定状态且无法删除。

有没有办法让 PSH 完全卸载模块并释放 DLL,以便我可以复制它并使用 Import-Module 重新加载它,而无需重新启动 PSH 控制台?

更新
因此,如果将模块加载到单独的 AppDomain 中,它仍然像普通模块一样工作吗?谁能举个例子吗?

最佳答案

有一个解决方法。打开 PowerShell 的另一个实例:

PS > powershell
PS > [load DLL]
PS > [do work]
PS > exit

退出后,您将返回到进行此调用的 PowerShell 实例(假设您在 PowerShell 实例内部进行了 powershell 调用)。您可以将任何常规参数传递给 powershell,因此您可以使用 -Command 或 -File。例如,

PS > powershell -Command '[load DLL]; [do work]' # Executes a command and exits
PS > powershell -Command '.\myscript.ps1 param1 param2' # Executes the script and exits
PS > powershell -File .\myscript.ps1 param1 param2 # Executes a script and exits.

当 PowerShell 退出时,它将释放 DLL 上的锁定,允许您继续工作。

所有这些都是通过 PowerShell 命令行界面完成的。我尚未测试如果您在脚本中间添加 powershell 或这在 ISE 中是否有效,会发生什么情况。 (我怀疑它可以在 ISE 中工作。)即使在脚本中不起作用,这在开发过程中仍然有用。

编辑:

做了一些检查。因此,这似乎在脚本和 ISE 中工作得很好,但 ISE 中有一个警告。在 ISE 中,当您处于单独的 PowerShell 进程中时,您无法读取用户的任何输入。如果您尝试,脚本或命令会停止等待,但不会像平常一样显示输入框,当然,您无法直接在 ISE 的输出窗口中键入内容。因此,如果您需要在[do work]中间提示输入,请在before启动PowerShell的新实例之前提示,并将其作为参数传递到work中。如果您使用常规 PowerShell 命令行,这些根本不是问题。

关于.net - Powershell 卸载模块...完全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337961/

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