batファイルからPowershellで関数functionを使うときの注意点です。
function func($abc){ $abc } func 12345 function func2($efg){ $efg } func2(1233333) func 12345
関数の実行には順番がある。
関数を定義した後に
関数を実行する。
Powershell ISEだと
先に関数を実行してから
あとで関数を定義しても
エラーがでなかった。
batファイルで実行するときには
1.関数の定義
2.関数の実行
の順番にしておいたほうがいいようです。
func 12345 function func($abc){ $abc } func 12345 function func2($efg){ $efg } func2(1233333) func 12345
としてbatファイルからps1ファイルを実行したら
以下のようなエラーが表示された。
func : 用語 ‘func’ は、コマンドレット、関数、スクリプト ファイル、または操作可
能なプログラムの名前として認識されません。名前が正しく記述されていることを確認
し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してくだ
さい。
発生場所 C:\Users\yutaka\Documents\powershell\test.ps1:1 文字:1
+ func 12345
+ ~~~~
+ CategoryInfo : ObjectNotFound: (func:String) [], CommandNotFoun
dException
+ FullyQualifiedErrorId : CommandNotFoundException
エラーが表示されたあと、残りの関数の実行が正常におこなわれた。