Compartir a través de


about_Hidden

Descripción breve

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

Descripción larga

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

La palabra clave hidden puede ocultar:

  • métodos (incluidos los constructores)
  • Eventos
  • 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, salvo que la finalización se produzca 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 palabra clave hidden 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 palabra clave hidden no tiene ningún efecto sobre cómo puedas ver o realizar cambios en los miembros de una clase. Al igual que todas las palabras clave del lenguaje en PowerShell, hidden no distingue entre mayúsculas y minúsculas, y los miembros ocultos siguen siendo públicos.

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

EJEMPLO:

En el ejemplo siguiente se muestra cómo usar la palabra clave hidden en una definición de clase. El método de clase Car, Drive, tiene una propiedad, rides, que no es necesario ver ni cambiar porque simplemente cuenta 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 pregunta al vendedor cuántas veces se ha conducido 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 palabra clave hidden.

Agregue la etiqueta hidden escribiéndola 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 en esta línea, comenzar la declaración con la palabra clave hidden facilita posteriormente 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 variable $TestCar a Get-Member. Observe que la propiedad rides no está entre los miembros enumerados en los resultados del comando 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;}

Ahora, vuelva a intentar ejecutar Get-Member, pero esta vez agregue el parámetro -Force. Tenga en cuenta que los resultados contienen la propiedad 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