Command 名称
add-member
描述
添加一个用户自定义成员(变量,函数)给powershell 实例对象(PS Object Instance).可以添加的类型为:AliasProperty, CodeProperty, NoteProperty, ScriptProperty, PropertySet, CodeMethod, MemberSet和ScriptMethod.
注意
1,add-member 只能作用于PSObject,测试某个对象类型是否PSOBject:
$obj -is [PSObject]
PSObject 是一个RuntimeType,也就是说它是一个运行时类型,其函数/变量由上下文决定。
2,这个方法是改变对象的某个实例,不改变同类型对象的其它实例。比如有两个PSObject1实例 $a和$b,如果给$a 添加一个方法或者属性,这一变化只会在$a上体现,$b是不受影响的。如果你再声明一个PSObject1对象实例$c,$c的动作行为已经属性将和$b一样,受影响的只有$a。
语法
Add-Member [-memberType] {<AliasProperty> | <CodeProperty> | <Property> | <NoteProperty> | <ScriptProperty> | <Properties> | <PropertySet> | <Method> | <CodeMethod> | <ScriptMethod> | <Methods> | <ParameterizedProperty> | <MemberSet> | <All>} [-name] <string> [[-value] <Object>] [[-secondValue] <Object>] -inputObject <psobject> [-force] [-passThru] [<CommonParameters>]
例子1,给变量添加函数
$b = "Hello boy!"
$b -is [PSObject] # False
$b = $b | add-member -membertype scriptmethod -name words -value {$this.split()} -passthru
$b -is [PSObject] # True
$b.words()
注意$b是string类型,不属于PSObject,所以必须用-passthru来强制返回一个扩展后的string对象然后赋给$b.测试某个对象类型是否PSOBject 请用"obj -is [PSObject]"
例子2,给变量添加属性
$c = "Hello boy!"
$c = $c | add-member noteproperty stringUse Display -passthru
$c.stringUse #Dsiplay
注意$c是string类型,不属于PSObject,所以必须用-passthru来强制返回一个扩展后的string对象然后赋给$c.测试某个对象类型是否PSOBject 请用"$obj -is [PSObject]"
例子3,
$a = (get-childitem)[0]
$a | add-member -membertype noteproperty -name status -value done
$a | get-member
获得当前目录下的第一个子项目(文件或文件夹)付给$a,然后给$a添加一个noteproperty属性。
相关主题
请参考get-member