PowerShell 模块是否更接近 C# 中的类"thing"?



这是我上一个问题的延续:

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

我认为现在我可以将我的行为封装在类中,但我仍然认为这种方法很糟糕,我想通过PowerShell的方式来解决这个问题

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

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

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

编辑01

换句话说,你们是怎么写剧本的?

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

或者。。。

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

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

$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/

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

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

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

就其本身而言,powershell并没有提供一个远远超出.NET.中所能找到的对象系统

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

希望这能有所帮助。

最新更新