cheshire-boy

オブジェクト

【Get-Member】PowerShellでメソッドやプロパティを調べる方法

投稿日:2016年10月24日 更新日:

こんにちは。チェシャ男です。(-皿-)

今回は、

【PowerShell でメソッドやプロパティを調べる方法】

について紹介します。

". (ドット演算子)"を使ってプロパティを指定しようとしたら「プロパティ名、ど忘れした!」なんて事が時々あるかと思います。 そんな時プロパティ名を素早く確認できる便利なコマンドレット "Get-Member" について解説します。

また、「メソッド?プロパティ?」という場合ために、それぞれの言葉の意味も本記事内で解説します。

スポンサーリンク

  Get-Member でメソッド・プロパティを確認

オブジェクトのメソッドやプロパティを参照するコマンドレットに、

Get-Member

といものがあります。

【コマンドレット】

Get-Member

【オプション】

-Name    <メンバー名>
-InputObject <オブジェクト>
-MemberType <メンバーの種類>
-View     <メンバーの型>
-Static
-Force

【入力】

System.Management.Automation.PSObject

【出力】

Microsoft.PowerShell.Commands.MemberDefinition

【エイリアス】

gm

「メソッドとプロパティの違い」と「オブジェクトとの関係」

プロパティとは、

"オブジェクト"の性質や属性を表すデータ

を指します。また、メソッドとは、

オブジェクトが持っているデータ処理操作

の事を指します。

オブジェクトについては PowerShellへの入門記事 で少し触れていますが、

オブジェクトは"プロパティ"と"メソッド"の集合体

と言えます。

図でかなりざっくりと表現するならこんな感じです。

オブジェクトのイメージ-チェシャわら
オブジェクトのイメージ-チェシャわら

難しい言葉が並んでよくわからないかもしれないので、日常生活に置き換えてみます。

周りを見渡してみてください。

  • テレビ
  • エアコン
  • 冷蔵庫
  • 電子レンジ ...

などなど、様々な"モノ"に溢れています。この"モノ"という1つ1つの物体を、オブジェクト(インスタンス)だと思ってください。

例えばテレビはリモコンで、

  • 電源を入れて映像を映す
  • チャンネルを変える
  • 音量を調節する

などの操作が行えます。

また、電子レンジはツマミで、

  • 冷凍食品を解凍する
  • お弁当を温める
  • クッキーを焼く

なんてことも可能です。

こういったオブジェクトに対するそれぞれの"操作"がメソッドです。この操作で出来ることが、それぞれの"モノ(オブジェクト)"の機能とも言えます。

メソッドの特徴は、

中でどんな処理が行われているかわからなくても操作ができる

という点です。

「リモコンのボタンを押す」、「電子レンジのツマミを回す」という操作を行うだけで期待する結果は得られますからね。

また、テレビや電子レンジには、

  • 製造元
  • 型番やモデル名
  • 消費電力
  • 色や形
  • 設置場所
  • チャンネル

など、それぞれに固有の情報があります。この"固有の情報"が、"モノ"が持つ"情報(データ)"つまりオブジェクトが持つプロパティというわけです。

またプロパティは、

「変更できるプロパティ」と「変更できないプロパティ」

の2つに分けることができます。上の例で言うと、"設置場所"や"チャンネル"なんかは簡単に変更できますね。

オブジェクトでは、メソッドを使ってプロパティを変更することができるんです。

今回の例えで言うと、

テレビ2chから4chリモコンで切り替える

というプロパティ変更を例にするとします。

テレビ  = オブジェクト
2ch    = 変更前プロパティ
4ch    = 変更後プロパティ
切り替える = メソッド

という関係を持っています。

これらの"プロパティ"と"メソッド"を合わせて"メンバー"と呼びます。だからコマンドレットも、「Get(ゲット)-Member(メンバー)」なんですね。

Get-Member を実行してメンバーを参照する

では、実際に Get-Member コマンドレットを実行してみましょう。

今回は、「1 , 2 , 3」という数値が入った配列「$Array」を使ってメンバーを確認してみます。

実行結果を見て頂くと、"MemberType" 列には Method(メソッド)Property(プロパティ)が確認できます。

その他にも、"AliasProperty" や "ParameterizedProperty" というメンバーが存在しますが、これらは"プロパティの別名"や"引数付のプロパティ"でありプロパティの一種と考えてください。

結果として得られたメンバーを". (ドット演算子)"を経由して使用することで、配列$Array に様々な操作を行うことができます。

オブジェクト(コレクション)の中のオブジェクトのメンバーを参照する

先ほどは配列のメンバーを確認しました。

配列は、"コレクションオブジェクト"というオブジェクトの1つです。コレクションを簡単に説明すると、「オブジェクトをまとめたオブジェクト」の事を言います。

つまり、配列の中の要素も1つのオブジェクトなんです。

では、

コレクションのオブジェクトのメンバーを参照するにはどうすればいいのでしょうか...

実は、この場合

オブジェクトのコレクションを"| (パイプライン)"で渡す

ことで参照することができます。

言葉で説明すると非常にわかりにくいですが、要は「配列を丸ごと"|"で渡す」ということです。

実際に実行時の様子を見てみましょう。

ご覧のように、実行結果は大きく変わっています。

"TypeName" も先ほどは「System.Object[]」であったのに対し「System.Int32」となっており参照元が変化していることがわかりますね。

他のコマンドレットの結果オブジェクトのメンバーも確認できる

Get-Member でメンバーを確認する際、最も使うことが多いのはこの使い方かもしれませんね。

他のコマンドレットを実行し、その実行結果を "| (パイプライン)" で渡すことでメンバーを参照することができます。

今回は、日付を取得する"Get-Date"コマンドレットの実行結果のメンバーを参照してみましょう。

このように、コマンドレットの実行結果からもメンバーを参照することができ、実際に".演算子"を使って操作することができます。

"TypeName" が「System.DateTime」とあるように、PowerShellではデータを"System.○○"というオブジェクトとして扱おうとします。

ですので、Get-Member コマンドレットを用いることであらゆるデータ・出力のメンバーを確認することができます。

覚えることが苦手な人にとっては、すごく便利なコマンドレットですね~

まとめ

メンバーとは、"メソッド"と"プロパティ"の事である。

オブジェクトのメンバーを参照したいときは

Get-Member -InputObject <オブジェクト>

または、

<オブジェクト> | Get-Member

で確認する。

<オブジェクト>の部分にはコマンドレットに置き換えることもできる。

スポンサーリンク

-オブジェクト
-, , ,

Copyright© 【チェシャわら】PowerShellとは、から学ぶ入門者の教科書-脱コマンドプロンプト- , 2018 AllRights Reserved Powered by micata2.