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