如何从单独的ps1文件访问自定义PowerShell 5.0类

问题描述 投票:0回答:2

我在ps1文件中创建了一个类,它在ps1文件中运行得很好。我可以在同一个文件中使用类和测试运行各种测试。

我的麻烦是我似乎无法找到一种方法将我的Class放在一个文件中,将Class Usage代码放在另一个文件中。

使用函数,您可以点源它们将任何外部ps1文件带入当前脚本。看起来像Powershell的类不能以这种方式工作。

如何组织代码以将类保存在与执行脚本不同的文件中?

我必须使用模块吗?我怎么做?

powershell class module
2个回答
2
投票

在文件Hello.psm1中:

class Hello {
# properties
[string]$person

# Default constructor
Hello(){}

# Constructor
Hello(
[string]$m
){
$this.person=$m
}

# method
[string]Greetings(){
return "Hello {0}" -f $this.person
}

}

在文件main.ps1中:

using module .\Hello.psm1

$h = New-Object -TypeName Hello
echo $h.Greetings()
#$hh = [Hello]::new("John")
$hh = New-Object -TypeName Hello -ArgumentList @("Mickey")
echo $hh.Greetings()

并运行.\main.ps1

Hello 
Hello Mickey

1
投票

这可能不适用于您的情况,但我有使用PowerShell缓存信息的噩梦(在我的情况下,它只是模块)。我在模块中更改的内容未正确加载 - 即使重启后也是如此。

我发现删除存储在C:\Users\<YourUsername>\AppData\Local\Microsoft\Windows\PowerShell子目录中的缓存解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.