ひよっこの備忘録

積み重ねて山となる

Power Shell 備忘録

酷い現場に配属されて、定形作業を手作業でやってるような環境に放り込まれた。
10年~20年前の間に流行ったようなソフトしか使用を認められておらず、ストレスで死ぬかと思った。
定形作業も手でやってて、本当に何年前の現場だよここはって感じでしたね……。
もうあんな環境に事故でも放り込まれないように、現場の面談でも色んな所に噛み付いていこうと思った。

そんな中、定形作業を自動化する為にPower Shellを勉強した。
C#の開発で、.Net の知識は多少あったためとっつきやすかったこともある。

ネット上では、最新のバージョンの情報がキレイにまとめられているところが全然見当たらず、
古い情報と新しい情報が混在していて中々手間取ったので、自分用にとりあえず分かった知識だけメモ程度に残しておこうと思う。
まぁ、色々と苦戦したがエクセルでVBA組むよかマシでした。

変数の宣言

"$" を使う。
こんな習慣ないから、for文の中で $array[i] とかケアレスミスして動かないということがままあった。

モジュールの読み込み

"." を使う。
. ".\Module\common\File.ps1" みたいな感じで、絶対パスかメインシェルの相対パスで記載。

型の宣言

[String]$str とか、 [int[]]$num とかってやる。

コマンドレット

Get-date とか、Select-String とか、こういうのをコマンドレットと呼ぶらしい。

関数の呼び方

function getFileName(){} という関数を宣言するとしたら、呼び方は
[String]$fileName = getFileName になる。 引数がある場合は、getFileName $str1 $str2みたいに呼ぶ。

関数の作り方

下記の様に宣言。

function functionName([String]str){
   ...
}

軽く調べた感じでは、戻り値を宣言することは出来ない様子。
型推論はあまり好きじゃないので、明示的に宣言できるところは明示的に宣言したいマン。
これはもう古い考え方なのだろうか……。

比較演算子

< とか = は使わない。 -lt とかこういうのを使う。

クラス

新しめ(5くらい?)のパワーシェルからは、クラスが使える。偉い。

csv

コマンドレットで、簡単にcsvを読み込むことが出来る。
何かデータを扱って処理したい場合にも、power shell である程度処理できるぞ。

余談

8月、9月は、現場で色々とゴタゴタがあり、仕事or寝る時間しか取れなくて忙しかった……。
また英語の勉強やらゲーム開発やら手を出していきたいです。