about_Hidden

Descrição breve

Descreve a palavra-chave, que oculta os hidden membros da classe dos resultados padrão Get-Member .

Descrição longa

Quando você usa a hidden palavra-chave em um script, você oculta os membros de uma classe por padrão. Os membros ocultos não são exibidos nos resultados padrão do cmdlet, do IntelliSense ou dos resultados de conclusão de Get-Member tabulação. Para exibir membros ocultos com a hidden palavra-chave, adicione o parâmetro Force a um Get-Member comando.

A hidden palavra-chave pode ocultar:

  • Métodos (incluindo construtores)
  • events
  • Propriedades do alias
  • outros tipos de membros (incluindo membros estáticos)

Os membros ocultos não são exibidos na conclusão de tabulação ou no IntelliSense, a menos que a conclusão ocorra na classe que define o membro oculto.

O novo atributo, System.Management.Automation.HiddenAttribute, permite que o código C# tenha a mesma semântica no PowerShell.

A hidden palavra-chave é útil para criar propriedades e métodos dentro de uma classe que você não necessariamente deseja que os usuários da classe vejam ou possam editar prontamente.

A hidden palavra-chave não tem efeito sobre como você pode exibir ou fazer alterações nos membros de uma classe. Como todas as palavras-chave de linguagem no PowerShell, hidden não diferencia maiúsculas de minúsculas e os membros ocultos ainda são públicos.

A hidden palavra-chave, juntamente com classes personalizadas, foi introduzida no Windows PowerShell 5.0.

EXEMPLO

O exemplo a seguir mostra como usar a hidden palavra-chave em uma definição de classe. O método de classe de carro , Drive, tem uma propriedade, passeios, que não precisa ser visto ou alterado, pois apenas contabiliza o número de vezes que Driveé chamado na classe de carro . Essa métrica que não é importante para os usuários da classe (considere, por exemplo, que quando você está comprando um carro, você não pergunta ao vendedor sobre quantas viagens o carro foi levado).

Como há pouca necessidade de os usuários da classe alterarem essa propriedade, podemos ocultar a propriedade e os resultados de Get-Member conclusão automática usando a hidden palavra-chave.

Adicione a hidden palavra-chave inserindo-a na mesma linha de instrução que a propriedade e seu tipo de dados. Embora a palavra-chave possa estar em qualquer ordem nessa linha, iniciar a instrução com a hidden palavra-chave facilita a identificação posterior de todos os membros que você ocultou.

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
}

Agora, crie uma nova instância da classe Car e salve-a em uma variável, $TestCar.

$TestCar = [Car]::new()

Depois de criar a nova instância, canalize o conteúdo da $TestCar variável para Get-Member. Observe que a propriedade rides não está entre os membros listados nos resultados do 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;}

Agora, tente executar Get-Member novamente, mas desta vez, adicione o -Force parâmetro. Observe que os resultados contêm a propriedade hidden rides, entre outros membros que estão ocultos por padrão.

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

Confira também