業務改善!Windows PowerShell入門

Windows PowerShellで、とにかく楽をしたい!実際に仕事で楽になった事、便利になった事を紹介しつつ進めていきます。

PowerShell コマンドレットにおけるカッコの意義について考察しろ!

コマンドレットのメンバーにアクセスする場合、気をつけねばならぬことがある。

Get-Dateコマンドレットを例にして、それを述べたい。

 


 

Get-Dateコマンドレットは日付時刻を取得するコマンドレットだ。
コンソールにそのまま叩き込むと、結果は以下の通り表示される。

 

f:id:acoustic_groove:20180108120622p:plain


ここで、よくありがちな、yyyy/MM/dd形式の結果が欲しいときはどうしたらいいか?

無論、PowerShell様、.NET Framework様ゆえ、オブジェクトのメソッドにそいつはある。

 

ToStringメソッドだ。引数に書式を設定するだけで簡単に結果をgetできるはずであるが......

 

以下、「PowerShellやるゾウ君」と、「天の声」でいくゼ!

 

PowerShellやるゾウ君

PowerShell様、.NET Framework様、こいつでおねげぇしやす!

ひゃっ、ひゃっ、ひゃっ。

 

Get-Date.ToString("yyyy/MM/dd")

 

f:id:acoustic_groove:20180108235337p:plain

 


ぬわんと!エラーが出たやないけ。

 

どうなっとるんやぁ、PowerShell様、.NET Framework様。

メソッド間違っとらへんかなぁ.....。確認するために、こいつを叩き込んでみよ。

 

Get-Date | gm | Where{$_.Name -eq "ToString"}

 

f:id:acoustic_groove:20180108235424p:plain

 


メソッドあるげ!何であかんかもう分からんわ。
俺、何も悪いことしてへんぞ。このタニシ!

とりあえず、もうやる気ねぇべ。

 

天の声

喝!!!!!!
もうおめえ、めんどくさいから先に答え言うわ。


コマンドレットに、カッコつけるだけじゃ!

 

 

(Get-Date).ToString("yyyy/MM/dd")

 

f:id:acoustic_groove:20180108235438p:plain


カッコをつける理由は、コマンドレットが完了してから、返されたオブジェクトのメソッドにアクセスする必要があるからじゃ!


たった1行でyyyy/MM/dd形式を得ているが、イメージ的には以下のように、2行に渡ってやっていることを簡略化したようなもんである。

 

 

$date = Get-Date 
$date.ToString("yyyy/MM/dd")

 

 

今回はGet-Dateコマンドレットが命題であったが、これが現在のロケーションを取得するGet-Locationコマンドレットであろうが、同じことである。

 

Get-Locationコマンドレットを使って、ロケーションのパス文字列だけを取得したいのであれば、以下のようにする。

 

 

(Get-Location).Path

 

 

カッコのなかでコマンドレットを完了したあと、コマンドレットのプロパティにアクセスしているのである。


分かったか?
分かったら、歯磨いて寝ろ!

 

PowerShell、イエーイ!