PowerShell模块是否越接近“;事物;的类
本文关键字:事物 的类 接近 模块 是否 PowerShell | 更新日期: 2023-09-27 17:59:01
这是我上一个问题的延续:
如何在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#类,这将是最接近您所追求的。
希望这能有所帮助。