2

バッチ ファイルが powershell 関数を呼び出す方法はありますか? 私はもう試した

powershell ". .\tes.ps1; Test-Me -Param1 'Hello world' -Param2 12345" 

そしてそれは機能し、関数が呼び出されますが、powershell スクリプトの他のすべても同様に呼び出されます。   

4

2 に答える 2

3

あなたがやろうとしているのは dot-source tes.ps1であるように見えるので、そのファイルで定義されているTest-Me関数を使用できます。ファイルをドットソースすると、そのファイル内のすべてが実行されます。実行したくない他のコマンドがtes.ps1にある場合は、 Test-Meを別のファイルに入れる必要があります。これを行う最善の方法:関数の内容を含むTest-Me.ps1という名前のファイルを作成し (で関数を宣言しないfunction { [...] }でください。関数のスクリプト ブロック内にコードを含めるだけです)、バッチでこのように呼び出します。ファイル:

powershell "<path>\Test-Me.ps1 -Param1 'Hello world' -Param2 12345"
于 2013-08-10T01:32:44.847 に答える
0

@Adi Inbar のソリューションは完璧に機能します。

ここに別の方法があります (構造化の観点から): tes.ps1 に関数しか含まれていない場合は、次の内容で新しいスクリプトを作成します。

.\tes.ps1
Test-Me -Param1 'Hello world' -Param2 12345

次に、バッチ ファイルで、「file」パラメーターを指定してこの新しいスクリプトを実行します。

Powershell -file *path_to_PS_script*

tes.ps1 が最初に実行され、スクリプト スコープ内のすべての関数が読み込まれます。実行する機能を選択できます。

このように、tes.ps1 ファイルは関数の中央ライブラリとして機能します。

于 2013-08-10T13:18:40.017 に答える