Compartir a través de


about_Hidden

Descripción breve

Describe la hidden palabra clave , que oculta los miembros de clase de los resultados predeterminados Get-Member .

Descripción larga

Cuando se usa la hidden palabra clave en un script, se ocultan los miembros de una clase de forma predeterminada. Los miembros ocultos no se muestran en los resultados predeterminados del Get-Member cmdlet, IntelliSense o resultados de finalización de tabulación. Para mostrar los miembros ocultos con la hidden palabra clave , agregue el parámetro Force a un Get-Member comando.

La hidden palabra clave puede ocultar:

  • métodos (incluidos los constructores)
  • events
  • propiedades de alias
  • otros tipos de miembro (incluidos los miembros estáticos)

Los miembros ocultos no se muestran en la finalización de tabulación o IntelliSense a menos que se produzca la finalización en la clase que define el miembro oculto.

El nuevo atributo System.Management.Automation.HiddenAttribute permite que el código de C# tenga la misma semántica dentro de PowerShell.

La hidden palabra clave es útil para crear propiedades y métodos dentro de una clase que no necesariamente quiere que los usuarios de la clase vean o puedan editar fácilmente.

La hidden palabra clave no tiene ningún efecto sobre cómo puede ver o realizar cambios en los miembros de una clase. Al igual que todas las palabras clave de lenguaje en PowerShell, hidden no distingue mayúsculas de minúsculas y los miembros ocultos siguen siendo públicos.

La hidden palabra clave, junto con las clases personalizadas, se introdujo en Windows PowerShell 5.0.

EJEMPLO

En el ejemplo siguiente se muestra cómo usar la hidden palabra clave en una definición de clase. El método clase Car , Drive, tiene una propiedad, paseos, que no es necesario ver o cambiar como simplemente se calcula el número de veces que se llama a Drive en la clase Car . Esa métrica que no es importante para los usuarios de la clase (tenga en cuenta, por ejemplo, que al comprar un automóvil, no se le pide al vendedor cuántas unidades se ha tomado el coche).

Dado que hay poca necesidad de que los usuarios de la clase cambien esta propiedad, podemos ocultar la propiedad de Get-Member y los resultados de finalización automática mediante la hidden palabra clave .

Agregue la hidden palabra clave escribiendo en la misma línea de instrucción que la propiedad y su tipo de datos. Aunque la palabra clave puede estar en cualquier orden de esta línea, iniciar la instrucción con la hidden palabra clave facilita más adelante la identificación de todos los miembros que ha ocultado.

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
}

Ahora, cree una nueva instancia de la clase Car y guárdela en una variable, $TestCar.

$TestCar = [Car]::new()

Después de crear la nueva instancia, canalice el contenido de la $TestCar variable a Get-Member. Observe que la propiedad rides no está entre los miembros enumerados en los resultados del Get-Member comando.

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;}

Ahora, intente volver a ejecutar Get-Member , pero esta vez agregue el -Force parámetro . Tenga en cuenta que los resultados contienen la propiedad rides oculta , entre otros miembros que están ocultos de forma predeterminada.

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;}

Consulte también