在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的对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)