“添加成员”到一个types,而不是在PowerShell中只有一个types的对象

“添加成员”到一个types,而不是在PowerShell中只有一个types的对象,第1张

概述“添加成员”到一个types,而不是在PowerShell中只有一个types的对象

在PowerShell中,您可以扩展对象:

使用Add-Member cmdlet可以将成员(属性和方法)添加到windows PowerShell对象的实例。 例如,您可以添加一个NoteProperty成员,该成员包含对象的描述或运行脚本以更改对象的ScriptMethod成员。

但是:

您添加的属性和方法仅添加到您指定的对象的特定实例。 添加成员不会更改对象types。 要创build新的对象types,请使用add-type cmdlet …

为什么在.NET / C#中将未处理的exception打印到stderr?

在.NET中编写虚拟打印机

DLL被标记为DELETEPENDING

如何开发windows应用程序

如何在windows上编码C#但在linux上运行?

例如:

$s = "Hello World" | Add-Member -Passthru ScriptProperty Reverse {$this[$this.Length..0] -join ""} $s Hello World $s.Reverse dlroW olleH

是否有一种简单的直接方式来为所有这种types的实例做同样的事情,就像C#中的扩展方法一样,它会做类似于以下的事情:

$s = "Hello World" | Add-Member -Passthru ScriptProperty Reverse {$this[$this.Length..0] -join ""} $s Hello World $s.Reverse dlroW olleH $a = "Aymen" $a.Reverse nemyA

从所有当前暂停的线程获取堆栈跟踪信息(托pipe)

如何合并两个列表的值

处理windows服务停止/暂停请求期间的延迟

监视windows共享

Powershell ScriptBlock不执行

这并不是一个简单的方法,但可以通过修改目标类型的类型数据来完成。 这需要Get-TypeData / Update-TypeData cmdlet。 Add-Member无法完成。 下面是将一个属性添加到DateTime的示例, UtcSeconds是自UTC时区1/1/1970以来的秒数。 您还可以添加其他成员,例如方法,别名或注释属性。

$td = Get-TypeData System.DateTime $scriptBlock = { ([System.TimeZoneInfo]::ConvertTimetoUtc($this) - (new-object System.DateTime 1970,1,"Utc")).TotalSeconds } $scriptProperty = new-object System.Management.automation.Runspaces.ScriptPropertyData "UtcSeconds",$scriptBlock $td.Members.Add("UtcSeconds",$scriptProperty) Update-TypeData $td -Force

请注意,如果您正在编写模块,则可以通过types.ps1xml文件更方便地扩展现有类型。

总结

以上是内存溢出为你收集整理的“添加成员”到一个types,而不是在PowerShell中只有一个types的对象全部内容,希望文章能够帮你解决“添加成员”到一个types,而不是在PowerShell中只有一个types的对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1282847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存