about_Hidden

简短说明

描述hidden关键字 (keyword) ,该关键字 (keyword) 对默认Get-Member结果隐藏类成员。

长说明

在脚本中使用 hidden 关键字 (keyword) 时,默认情况下隐藏类的成员。 隐藏成员不会显示在 cmdlet、IntelliSense 或 Tab 自动补全结果的默认 Get-Member 结果中。 若要显示使用 关键字 (keyword) 隐藏hidden的成员,请将 Force 参数添加到Get-Member命令。

关键字 (keyword) hidden 可以隐藏:

  • 方法 (包括构造函数)
  • 活动
  • 别名属性
  • 其他成员类型 (包括静态成员)

隐藏成员不会显示在 Tab 自动补全或 IntelliSense 中,除非完成发生在定义隐藏成员的类中。

新属性 System.Management.Automation.HiddenAttribute 使 C# 代码在 PowerShell 中具有相同的语义。

关键字 (keyword) hidden 可用于在类中创建不一定希望类的用户查看或易于编辑的属性和方法。

关键字 (keyword) hidden 不会影响如何查看或更改类的成员。 与 PowerShell 中的所有语言关键字一样, hidden 不区分大小写,并且隐藏成员仍然是公共的。

hidden 关键字 (keyword) 以及自定义类在 Windows PowerShell 5.0 中引入。

示例

以下示例演示如何在hidden类定义中使用 关键字 (keyword) 。 Car 类方法 Drive 具有无需查看或更改的属性,因为它只是计算 DriveCar 类上调用的次数。 这个对类用户并不重要的指标 (考虑,例如,当你买车时,你不会询问卖家汽车) 驾驶多少次。

由于 类的用户几乎不需要更改此属性,因此可以使用 关键字 (keyword) 对 Get-Member 属性和自动完成结果hidden隐藏该属性。

hidden 通过在与 属性及其数据类型相同的语句行上输入来添加关键字 (keyword) 。 尽管关键字 (keyword) 可以在此行上按任意顺序排列,但从 hidden 关键字 (keyword) 开始语句,以后可以更轻松地识别已隐藏的所有成员。

class Car
{
   # Properties
   [String] $Color
   [String] $ModelYear
   [int] $Distance

   # Method
   [int] Drive ([int]$miles)
   {
      $this.Distance += $miles
      $this.rides++
      return $this.Distance
   }

   # Hidden property of the Drive method
    hidden [int] $rides = 0
}

现在,创建 Car 类的新实例,并将其保存在变量 $TestCar中。

$TestCar = [Car]::new()

创建新实例后,通过管道将 $TestCar 变量的内容传递给 Get-Member。 请注意, rides 属性不在命令结果中列出的成员中 Get-Member

PS C:\Windows\system32> $TestCar | Get-Member

   TypeName: Car

Name        MemberType Definition
----        ---------- ----------
Drive       Method     int Drive(int miles)
Equals      Method     bool Equals(System.Object obj)
GetHashCode Method     int GetHashCode()
GetType     Method     type GetType()
ToString    Method     string ToString()
Color       Property   string Color {get;set;}
Distance    Property   int Distance {get;set;}
ModelYear   Property   string ModelYear {get;set;}

现在,尝试再次运行 Get-Member ,但这次请添加 -Force 参数。 请注意,结果包含隐藏 的 rides 属性,以及默认隐藏的其他成员。

PS C:\Windows\system32> $TestCar | Get-Member -Force

   TypeName: Car

Name          MemberType   Definition
----          ----------   ----------
pstypenames   CodeProperty System.Collections.ObjectModel.Collection`1
psadapted     MemberSet    psadapted {Color, ModelYear, Distance,
psbase        MemberSet    psbase {Color, ModelYear, Distance,...
psextended    MemberSet    psextended {}
psobject      MemberSet    psobject {BaseObject, Members,...
Drive         Method       int Drive(int miles)
Equals        Method       bool Equals(System.Object obj)
GetHashCode   Method       int GetHashCode()
GetType       Method       type GetType()
get_Color     Method       string get_Color()
get_Distance  Method       int get_Distance()
get_ModelYear Method       string get_ModelYear()
get_rides     Method       int get_rides()
set_Color     Method       void set_Color(string )
set_Distance  Method       void set_Distance(int )
set_ModelYear Method       void set_ModelYear(string )
set_rides     Method       void set_rides(int )
ToString      Method       string ToString()
Color         Property     string Color {get;set;}
Distance      Property     int Distance {get;set;}
ModelYear     Property     string ModelYear {get;set;}
rides         Property     int rides {get;set;}

另请参阅