zaki work log

作業ログやら生活ログやらなんやら

[PowerShell] オブジェクトの型や持っているプロパティ等を調べる

今朝久しぶりにPowerShellのコードを書こうとしたらいろいろ忘れてたので備忘録

型を調べる

$flen_values.GetType()

たとえばこんなコードであれば

$file = "sample.jpg"
[void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$image_exif = New-Object System.Drawing.Bitmap($file)
$flen_values = ($image_exif.PropertyItems | Where-Object { $_.Id -eq 41989 }).Value

$flen_values.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Byte[]                                   System.Array

こうなって、Byteの配列だとわかる。

プロパティやメソッドを調べる

Byte[]ならリファレンスとか見ればわかるだろうけど、自作(多作)のオブジェクトとかだと・・・みたいなとき

$flen_values | Get-Member

Get-Memberにパイプする。
すると、そのオブジェクトが持っているメソッドやプロパティの一覧がわかる。

TypeName   : System.Byte
Name       : CompareTo
MemberType : Method
Definition : int CompareTo(System.Object value), int CompareTo(byte value), int IComparable.CompareTo(Syst
             em.Object obj), int IComparable[byte].CompareTo(byte other)


TypeName   : System.Byte
Name       : Equals
MemberType : Method
Definition : bool Equals(System.Object obj), bool Equals(byte obj), bool IEquatable[byte].Equals(byte othe
             r)

:
:

Get-Membergmという名前でもエイリアス登録されているので、

$flen_values | gm

も等価