いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

PowerShell Tips-001(オブジェクトの操作)

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のクラスライブラリの理解があればかなり便利なのではないでしょうか。