1

这是我之前问题的延续:

如何在 PowerShell 中创建具有行为(方法)的真实对象?

我认为现在我可以将我的行为封装在类中,但我仍然认为这种方法很老套,我想用 PowerShell 方式解决这个问题

因此,Powershell 模块似乎是答案......

我想知道,例如,如果我想在 PowerShell 中以面向对象的方式封装行为,那么最好的选择/方法是什么?

PowerShell 模块是为此目的而设计的吗?

编辑 01

换句话说,你们是如何编写脚本的?

你只是以程序方式编写它们吗

或者...

在编写 PowerShell 脚本时,是否有更简洁的方法来应用一些面向对象的编程概念?

4

2 回答 2

4

不知道这是否是最好的方法,但为什么不使用 pscustomobject 呢?

$o=New-Object -TypeName pscustomobject -Property @{"val"="test"}
Add-Member -InputObject $o -MemberType ScriptMethod -Name upper -Value {$this.val.toUpper()}
$o.upper()

TEST

或者,也许您会在 codeplex 上对这个项目感到满意:http: //psclass.codeplex.com/

于 2013-02-12T19:27:06.793 回答
3

我对此的看法如下。我不相信脚本语言曾经是面向对象的。他们中的大多数会支持某种对象模型,但这不是他们的主要目的。

Powershell 确实支持它,因为它建立在 .NET 之上,因此您可以完全访问 .NET 的对象模型。

您可以在 powershell 脚本(包含类和所有)中编写内联 C# 代码并即时编译它,然后重复执行。一旦你习惯了这样做,这并不难。

就其自身而言,powershell 并没有提供远远超出 .NET 的对象系统。

如果您还没有找到它,请参考Add-Member cmdlet,如果出于任何宗教或文化原因您不想在 powershell 代码中嵌入 c# 类,那将是最接近您所追求的。

希望这可以帮助。

于 2013-02-12T19:28:33.923 回答