batファイルからPowershellで関数functionを使うときの注意点

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

エラーが表示されたあと、残りの関数の実行が正常におこなわれた。