次の方法で共有


about_Hidden

簡単な説明

既定のhidden結果からGet-Memberクラス メンバーを非表示にするキーワード (keyword)について説明します。

長い説明

スクリプトでキーワード (keyword)をhidden使用する場合、既定ではクラスのメンバーを非表示にします。 非表示のメンバーは、コマンドレット、IntelliSense、またはタブ入力候補の結果の Get-Member 既定の結果には表示されません。 キーワード (keyword)で非表示にしたメンバーをhidden表示するには、Force パラメーターをコマンドにGet-Member追加します。

キーワード (keyword)ではhidden、次の情報を非表示にできます。

  • メソッド (コンストラクターを含む)
  • events
  • alias プロパティ
  • その他のメンバー型 (静的メンバーを含む)

非表示のメンバーを定義するクラスで入力候補が発生しない限り、非表示のメンバーはタブ補完または IntelliSense に表示されません。

新しい属性 System.Management.Automation.HiddenAttribute を使用すると、C# コードが PowerShell 内で同じセマンティクスを持つことができます。

hidden キーワード (keyword)は、必ずしもクラスのユーザーが表示したり、簡単に編集したりできないようにするプロパティとメソッドをクラス内に作成する場合に便利です。

hidden キーワード (keyword)は、クラスのメンバーを表示または変更する方法には影響しません。 PowerShell のすべての言語キーワードと同様に、 hidden では大文字と小文字は区別されず、非表示のメンバーは引き続きパブリックです。

キーワード (keyword)とカスタム クラスはhidden、Windows PowerShell 5.0 で導入されました。

次の例は、クラス定義で キーワード (keyword)をhidden使用する方法を示しています。 Car クラス メソッド Drive には、Drive クラスで Drive が呼び出される回数を集計するだけで済むため、表示または変更する必要のないプロパティ、乗り物があります。 このメトリックは、クラスのユーザーにとって重要ではありません (たとえば、車を購入する際に、車が何台のドライブを取ったか売り手に尋ねないことを考えてください)。

クラスのユーザーがこのプロパティを変更する必要はほとんどないため、キーワード (keyword)を使用して、プロパティGet-Memberを 非表示にしたり、自動補完の結果をhidden表示したりできます。

hidden プロパティとそのデータ型と同じステートメント行に入力して、キーワード (keyword)を追加します。 キーワード (keyword)は、この行で任意の順序にすることができますが、 ステートメントを キーワード (keyword) でhidden開始すると、後で非表示になっているすべてのメンバーを簡単に識別できます。

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
}

次に、 Car クラスの新しいインスタンスを作成し、変数 $TestCarに保存します。

$TestCar = [Car]::new()

新しいインスタンスを作成したら、変数の $TestCar 内容を に Get-Memberパイプします。 rides プロパティがコマンドの結果に一覧表示されているメンバーの中に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;}

ここで、もう一度実行 Get-Member してみますが、今回は パラメーターを -Force 追加します。 結果には、既定で非表示になっている他のメンバーの間で、非表示の 乗り物 プロパティが含まれていることに注意してください。

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

こちらもご覧ください