gpt4 book ai didi

powershell - 是否有在 Powershell 5 类中创建脚本属性的正确方法

转载 作者:行者123 更新时间:2023-12-04 19:50:23 28 4
gpt4 key购买 nike

在 5 之前的 Powershell 版本中,可以使用 New-Object “随时”创建对象,并且可以使用 Add-Member 进行扩展。 Powershell 5 引入了类,但它们似乎只允许基本的属性和方法。是否有任何适当的方法可以模拟脚本属性(即,被视为属性的属性,而不是方法,但仍然在运行中计算)?

由于构造函数中的 hack,以下代码给出了想要的结果。可以避免这种黑客攻击吗?

class fakescriptproperty {
hidden [datetime] _currenttime() { return ( Get-Date ) }

fakescriptproperty() {
Add-Member -InputObject $this -MemberType ScriptProperty `
-Name currenttime -Value { $this._currenttime() }
}
}

$test = New-Object -TypeName fakescriptproperty
$test.currenttime

最佳答案

不确定我理解这里的问题。这就是我创建、扩展和访问自定义对象的方式;如果你在追求别的东西,请告诉我。

# Creating new object with key/value hashtable
$customObject = New-Object psobject -Property @{key1 = "value" ; key2 = "value2"}

# Adding member to custom object
$customObject | Add-Member -MemberType NoteProperty -Name key3 -Value value3

# This will return value3
$customObject.key3

================================================== ======================

编辑 - 我对类(class)不熟悉。在 PowerShell 5 中,可以使用 ScriptProperty 成员扩展自定义对象,并指定一个随时计算的脚本块(不需要hacky)。
$test = New-Object psobject
$test | Add-Member -Name currentime -MemberType ScriptProperty -Value {Get-Date}
$test.currentime

可以指定 -SecondValue处理设置属性的脚本块(测试时继续运行 StackOverflowException)

关于powershell - 是否有在 Powershell 5 类中创建脚本属性的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39117935/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com