バッチ ファイルが powershell 関数を呼び出す方法はありますか? 私はもう試した
powershell ". .\tes.ps1; Test-Me -Param1 'Hello world' -Param2 12345"
そしてそれは機能し、関数が呼び出されますが、powershell スクリプトの他のすべても同様に呼び出されます。
バッチ ファイルが powershell 関数を呼び出す方法はありますか? 私はもう試した
powershell ". .\tes.ps1; Test-Me -Param1 'Hello world' -Param2 12345"
そしてそれは機能し、関数が呼び出されますが、powershell スクリプトの他のすべても同様に呼び出されます。
あなたがやろうとしているのは dot-source tes.ps1であるように見えるので、そのファイルで定義されているTest-Me関数を使用できます。ファイルをドットソースすると、そのファイル内のすべてが実行されます。実行したくない他のコマンドがtes.ps1にある場合は、 Test-Meを別のファイルに入れる必要があります。これを行う最善の方法:関数の内容を含むTest-Me.ps1という名前のファイルを作成し (で関数を宣言しないfunction { [...] }
でください。関数のスクリプト ブロック内にコードを含めるだけです)、バッチでこのように呼び出します。ファイル:
powershell "<path>\Test-Me.ps1 -Param1 'Hello world' -Param2 12345"
@Adi Inbar のソリューションは完璧に機能します。
ここに別の方法があります (構造化の観点から): tes.ps1 に関数しか含まれていない場合は、次の内容で新しいスクリプトを作成します。
.\tes.ps1
Test-Me -Param1 'Hello world' -Param2 12345
次に、バッチ ファイルで、「file」パラメーターを指定してこの新しいスクリプトを実行します。
Powershell -file *path_to_PS_script*
tes.ps1 が最初に実行され、スクリプト スコープ内のすべての関数が読み込まれます。実行する機能を選択できます。
このように、tes.ps1 ファイルは関数の中央ライブラリとして機能します。