簡単な説明
既定の hidden の結果からクラス メンバーを非表示にする Get-Member キーワードについて説明します。
長い説明
スクリプトで hidden キーワードを使用すると、クラスのメンバーは既定で非表示になります。 非表示のメンバーは、Get-Member コマンドレット、IntelliSense、またはタブ補完の結果の既定の結果には表示されません。
hidden キーワードで非表示にしたメンバーを表示するには、 コマンドに Get-Member パラメーターを追加します。
hidden キーワードを使用すると、以下を非表示にすることができます。
- メソッド (コンストラクターを含む)
- events
- エイリアスのプロパティ
- その他のメンバー型 (静的メンバーを含む)
非表示のメンバーを定義するクラスで完了が発生しない限り、タブの完了、または IntelliSense に非表示のメンバーは表示されません。
新しい属性 System.Management.Automation.HiddenAttribute により、PowerShell 内で C# コードにも同じセマンティクスを使用できます。
hidden キーワードは、hidden キーワードは、クラスのユーザーが表示や編集を簡単に行うことができないプロパティやメソッドをクラス内に作成する場合に便利です。
hidden キーワードは、作成者がクラスのメンバーを表示または変更する方法には影響しません。 PowerShell のすべての言語キーワードと同様に、hidden では大文字と小文字は区別されず、非表示のメンバーはパブリックです。
hidden キーワードとカスタム クラスは、Windows PowerShell 5.0 で導入されました。
Example
クラス定義で hidden キーワードを使用する方法の例を次に示します。
Car クラス メソッド Driveには、Car クラスで drive が呼び出される 回数を集計するだけで済むため、表示または変更する必要のないプロパティ 乗り物があります。 このメトリックは、クラスのユーザーにとって重要ではありません (たとえば、車を購入するときに、その車が何回運転されたかを販売者に尋ねることはありません)。
クラスのユーザーがこのプロパティを変更する必要はほとんどないため、Get-Member キーワードを使用して、hidden および自動補完の結果で、このプロパティを非表示にすることができます。
プロパティおよびそのデータ型と同じステートメント行に、hidden キーワードを入力して追加します。 この行ではキーワードを任意の順序で指定できますが、ステートメントを 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;}
こちらも参照ください
PowerShell