Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【PowerShell】コマンドラインで自作関数を使用する

コマンドラインで関数を定義したスクリプトを呼び出せばよい。ただし、実行時には実行演算子(&)で呼び出すのではなくドットソースをすること。ドットソースをすることで、スクリプト内で定義された変数と関数は、そのスクリプト終了後も持続する。スクリプトをドットソースするには、ドット演算子(.)を使ってスクリプト名をパラメーターとして指定すること。 以下のスクリプトは累乗と階乗を求める関数をそれぞれpower、factorialとして作成したものでdotsource.ps1と保存する。このスクリプトをドットソースするまでは計算できないが、ドットソースすることで計算するできるようになる。

function power($d, $n) {
  $r = 1
  for ($i = 1; $i -le $n; $i++) {
    $r *= $d
  }
  return $r
}
function factorial($n) {
  $d = 1.
  for ($i = 1; $i -le $n; $i++) {
    $d *= $i
  }
  return $d
}

実行結果

PS > power 2 5
power : 用語 'power' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
(以下表示省略)
PS > factorial 6
factorial : 用語 'factorial' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
(以下表示省略)
PS > & .\dotsource.ps1
PS > power 2 5
power : 用語 'power' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
(以下表示省略)
PS > factorial 6
factorial : 用語 'factorial' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
(以下表示省略)
PS > . .\dotsource.ps1
PS > power 2 5
32
PS > power 2 6
64
PS > power 2 7
128
PS > factorial 6
720
PS > factorial 7
5040
PS > factorial 8
40320