在 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
Run Code Online (Sandbox Code Playgroud)