在PowerShell 5.0中有一个Hidden关键字,该关键字的作用可以隐藏来自Get-Member所输出的部分结果信息。
这样说吧,当你使用Hidden关键字的时候,你可以隐藏属性,方法,甚至包括别名属性,方法类型等等可以从Get-Member cmdlet输出的信息,甚至等你在编辑器里的时候使用。那么什么时候我们需要隐藏所谓的这些成员属性,方法等等信息呢,当你觉得有些属性未必是最重要的或者不想被用户直接看到的你可以选择把它隐藏起来。
我们先通过如下例子来看看如何使用Hidden关键字:
class People
{
[int]$Stature
[String]$Name
[String]$Gender
[String]PersonInfo([String]$NickName)
{
$this.Name += $NickName
$this.Age
return $this.Name
}
hidden [int] $Age = 20
}
在上面的例子中,我们定义了一个People类,里面包含了一些我们定义的属性,和一个PersonInfo方法,但是我不想让用户直接看到所定义的Age属性,所以在这里我使用了Hidden关键字在我们想要隐藏的属性前面把该属性隐藏起来。
$PeopleA = [People]::new()
我们先生成一个实例对象来查看是否真正成功的把所需要隐藏的属性隐藏起来了。
接着我们使用Get-Member方法查看该实例对象下所包含的成员属性、方法等信息:PS C:\Windows\system32> $PeopleA|Get-Member
TypeName: People
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
PersonInfo Method string PersonInfo(string NickName)
ToString Method string ToString()
Gender Property string Gender {get;set;}
Name Property string Name {get;set;}
Stature Property int Stature {get;set;}
我们可以看到并没有包含Age属性信息,当我们加上Force参数来强制显示所有成员时便可以成功地看到Age属性了,如下:
PS C:\Windows\system32> $PeopleA|Get-Member -Force
TypeName: People
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] pstypenames{get=PSTypeNam...
psadapted MemberSet psadapted {Stature, Name, Gender, get_Stature, set_Stature, get_Name, set_Name, get_Gender, set_Gender, PersonInfo, get_Age, set_Age, ToString, Equals, GetHashCode...
psbase MemberSet psbase {Stature, Name, Gender, get_Stature, set_Stature, get_Name, set_Name, get_Gender, set_Gender, PersonInfo, get_Age, set_Age, ToString, Equals, GetHashCode, G...
psextended MemberSet psextended {}
psobject MemberSet psobject {BaseObject, Members, Properties, Methods, ImmediateBaseObject, TypeNames, get_BaseObject, get_Members, get_Properties, get_Methods, get_ImmediateBaseObje...
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
get_Age Method int get_Age()
get_Gender Method string get_Gender()
get_Name Method string get_Name()
get_Stature Method int get_Stature()
PersonInfo Method string PersonInfo(string NickName)
set_Age Method void set_Age(int )
set_Gender Method void set_Gender(string )
set_Name Method void set_Name(string )
set_Stature Method void set_Stature(int )
ToString Method string ToString()
Age Property int Age {get;set;}
Gender Property string Gender {get;set;}
Name Property string Name {get;set;}
Stature Property int Stature {get;set;}