見出し画像

#としじのPS その8~PSの文法解説~

#としじのPS その8~PSの文法解説~

改めて前回のコードについて解説していきます。
ちょっと長くなるかも・・・。
習うより慣れよという精神の人は、一旦読み飛ばして練習問題を進めていくのもありだと思います。

cls; cd C:\PowerShell
cls
これは 「Clear-Host」という コマンドレット(VBAでいうとステートメントかな?)のエイリアス(別名)です。
これによりコンソール(実行ウィンドウ、VBAでいうイミディエイトウィンドウ)がクリアされます。
;
これは改行とみなされます。VBAでは「:」ですね。
cd
これは「Set-Location」というコマンドレットのエイリアスです。
カレントディレクトリを移動するのに使います。今回は「C:\PowerShell」に移動しています。
$csv = Import-Csv .\ps2.csv -Encoding Default
$csv
PSでは変数を表すのに先頭に $ を付けます。
Import-Csv ~
ファイル名および文字コードを指定してCSVファイルを読み、PS内で扱えるオブジェクトとして取り込んでいます。 -Encoding Default というのは 文字コードでSJIS を指定したことになります。ここはもしかしたらPSのバージョンなどで違いが出るところかもしれないです。

ということで、この1行で $csv という変数に .\ps2.csv の情報を格納することができました。


$csv | % { [int]$_.金額 = [int]$_.数量 * [int]$_.単価 }
ここで「  |(パイプライン、パイプ)」というのが登場します。
VBAにはない概念ですね。
これを説明するのは結構むずかしいので、使いながら慣れていってもらうほうがいいかなと思います。

今回は $csv というオブジェクトを パイプに渡して、% { ~ }(ForEach-Object のエイリアス)で波かっこの中を処理をしていく流れになります。
また $_ はパイプで渡されてきたオブジェクトを意味します。
今回はCSVの1行分ずつが $_ に格納されます。
そして、$_ に対してピリオドをつけてヘッダに記載されている文字を指定することでデータにアクセスできます!
これができることよってコードがかなりわかりやすく記述できます!
[int]
これはキャストといって、今回の例ではInt32(VBAでいうLong型)に変換しなさいということです。
Long型の変数として扱いなさい、という意味だと思ってもらえばいいかと思います。
$csv | Out-GridView
Out-GridView
これによって簡単に表形式で出力ができます。
フィルタリングとかも簡単にできるので、色々と弄ってみると面白いと思いますよ~。

画像1

というわけで、ちょっと長くなりましたが今回はここまで。
この辺は一度で理解するのはかなり難しいと思います。
少し慣れたころまたこの記事を読み直してもらって、僕の言いたいことが徐々に伝わってもらえればいいなーと思います。

この記事が気に入ったらサポートをしてみませんか?