我创建了一个名为"Application"的类,并将其加载到我的主脚本中:
Import-Module -NAME "C:\PowerShell_Scripts\Class\Application.ps1" -GLOBAL -FORCE;
Run Code Online (Sandbox Code Playgroud)
但是,如果我只更改类文件并在PowerShell ISE中运行代码,则不会应用任何更改.即使我使用了-FORCE,它几乎就像是在类中仍然在内存中.
我还尝试在加载模块之前删除该模块,并发生同样的问题:
Remove-Module "Application" -ErrorAction Ignore -FORCE;
Import-Module -NAME "C:\PowerShell_Scripts\Class\Application.ps1" -GLOBAL -FORCE;
Run Code Online (Sandbox Code Playgroud)
如果我在主脚本中进行单个字符更改,则会重新加载该类!但我不应该修改主脚本来强制PowerShell重新加载类,这看起来很傻.
有没有办法从内存中删除Application类(如果存在)?
注意:只有函数的文件工作文件.这仅适用于类导入.
添加:在控制台中,如果我运行Remove-Module命令它运行成功但我仍然可以创建新对象:
$appDetails = [Application]::new($applicationID);
Run Code Online (Sandbox Code Playgroud)
对我来说没有意义......
主要内容:
# Application Details
# -----------------
#ID
$applicationID = 1;
############################################
#
# Load Supporting Scripts
#
############################################
try
{
Remove-Module "Application" -ErrorAction Ignore -FORCE;
Remove-Module "Common" -ErrorAction Ignore -FORCE;
Remove-Module "ServerData" -ErrorAction Ignore -FORCE;
Import-Module -NAME "C:\PowerShell_Scripts\Common.ps1" -GLOBAL -FORCE;
Import-Module -NAME "C:\PowerShell_Scripts\ServerData.ps1" -GLOBAL -FORCE;
Import-Module -NAME "C:\PowerShell_Scripts\Class\Application.ps1" -GLOBAL …Run Code Online (Sandbox Code Playgroud) 我在 ps1 文件中创建了一个类,该类在 ps1 文件本身中工作得很好。我可以在同一个文件中使用类和测试运行各种测试。
我的麻烦是我似乎无法找到一种方法将我的类放入一个文件中并将类使用代码放入另一个文件中。
使用函数,您只需点源它们即可将任何外部 ps1 文件引入当前脚本中。看起来 Powershell 的类不能以这种方式工作。
如何组织代码以将类保存在与执行脚本不同的文件中?
我必须使用模块吗?我怎么做?