PowerShellでコマンドラインを操作している際、たとえば
PS c:\> get-content memo.txt
のようにコマンドを打ったりするのですが、この操作、実際には
.NETオブジェクトを操作しています。
実際にどのようなオブジェクトが返されているのかを確認するには
get-memberコマンドレットを使用します。
PS c:\> get-content memo.txt | get-member
これを実行すると以下のように表示されます。
TypeName: System.String Name MemberType Definition ---- ---------- ---------- Clone Method System.Object Clone() CompareTo Method System.Int32 CompareTo(Object value),... Contains Method System.Boolean Contains(String value)
つまり、get-contentコマンドレットはSystem.Stringオブジェクトを
返してくるということです。
オブジェクトを返してくるということは、そのままメソッドやプロパティをコールできる
ということになります。
ためしに、Lengthプロパティを見てみます。PowerShellにて、コマンドレットの戻りオブジェクトを
操作する場合は、一旦キャストしてから実行します。
PS c:\> ([System.String] (get-content memo.txt)).Length
上記のコマンドを実行してみると、ちゃんと値が帰ってきます。
オブジェクトなので、好きに操作することができます。
たとえば、こんなのもOK.
PS c:\> ([System.String] (get-content memo.txt)).Length.ToString()[0]
ちなみに、get-contentコマンドレットには、aliasが設定されていますので、
以下のように実行しても同じことになります。
PS c:\> cat memo.txt
.NETのクラスライブラリの理解があればかなり便利なのではないでしょうか。