在PowerShell(v2)中,如何将私有成员添加到PSObject中?
即只能通过ScriptProperty或ScriptMethod中的$this
访问的成员。
答案 0 :(得分:2)
在5.0版中引入classes之前,PowerShell扩展类型系统(ETS)与基础类型系统(.NET / CTS)没有相同的访问修饰符概念。
向用户暗示“不要直接使用”的一种方法是使用“内部”属性的前缀,例如__
(双下划线):
$object = New-Object psobject -Property @{
Public = 4
__private = 9
} |Add-Member -MemberType ScriptProperty -Name Private -Value {
$this.__private
} -SecondValue {
param([int]$newValue)
if(($newValue % 3) -ne 0){
Write-Warning "Only multiples of 3 allowed"
} else {
$this.__private = $newValue
}
} -PassThru