0

私のPowerShellスクリプトでは、ある関数の出力は別の関数の入力です。
例:関数CreateReport($ x)は、関数ParseXml($ x)が実行されない限り実行できません。ユーザーが1番目の関数を実行する前に2番目の関数を直接実行した場合はどうなりますか。
1番目の関数がすでに実行されているかどうかを確認して2番目の関数を続行するにはどうすればよいですか?つまり、最初に1番目の関数を実行して(txtファイルを生成)、次に2番目の関数を実行しますか?最初のfuncがすでに実行されている場合は、再実行しないでください。
例:次の2つの関数を持つTestFunc.ps1ファイルがあるとします。

$X = "C:\XmlPath\file1.xml"
Function ParseXml($X)
{
#Read xml and output contents in a txt file    
}

#This function should execute only after the function Parsexml($X) and if Pasrsexml() has run before and generated the output, it shouldnot be allowed to re-run here
Function CreateReport($T) 
{
#from the txtfile Create csv
}
4

3 に答える 3

2

これとあなたの他の質問によると、PowerShellスクリプトのフラグとしてパラメータ化された関数をエイリアスする方法は?いわゆるビルドスクリプトを実装しようとしています。ホイールを発明する(タスクの依存関係を実装する、タスクが1回実行されるのを監視するなど)代わりに、psakeInvoke-Buildなどのすでに実装されているツールを見てください。これらはPowerShell用に設計されており、必要な処理を正確に実行します(指定されたタスクセットの実行、タスクの依存関係の維持、タスクの1回の実行など)。もちろん、これらのツールには少し学習が必要ですが、長期的には学習する価値があります。

于 2012-10-16T08:51:43.953 に答える
1

ParseXml関数がファイルを出力する場合、関数で、コマンドレットCreateReportを使用してこのファイルの存在をテストできます。Test-Path

存在する場合はCreateReport関数を続行し、そうでない場合は続行する前に関数を呼び出しますParseXml

于 2012-10-16T07:18:26.890 に答える
0

フラグを使用します。関数にフラグを設定し、ParseXml関数でチェックしてくださいCreateReport。フラグが設定されていない場合は、エラーを出力して終了します。それ以外の場合は、レポートコードを実行します。プロセスが完了したら、フラグをクリアすることを忘れないでください。

フラグ変数を使用できます。より永続的なフラグについては、フラグファイルを使用するか、データベースにフラグを設定することを検討してください。

于 2012-10-16T06:45:15.093 に答える