Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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;}