4

私はいくつかのコマンドレットを書いています。私が現在取り組んでいるものは、他のコマンドレットを呼び出したいと思います。私はこれを次のように試みています:

//Calling cmdlet
protected override void ProcessRecord()
{
    Cmdlet1 _cmdlet1 = new Cmdlet1();
    _cmdlet1.configFilePath = this.configFilePath; //set a few parameters the cmdlet will need
    _cmdlet1.useConfigFile = true; //and one more
    _cmdlet1.Invoke();

    Cmdlet2 _cmdlet2 = new Cmdlet2();
    _cmdlet2.configFilePath = this.configFilePath; //set a few parameters again
    _cmdlet2.useConfigFile = true; //one more
    _cmdlet2.Invoke();
}

ただし、powershell から「Calling cmdlet」を実行しても何も起こりません。エラーはありません。他のコマンドレットで記述したコードは実行されません。コマンドレットが実際に実行されている場合、これらのWriteObject呼び出しを確認できるはずではありませんかCmdlet1? Cmdlet2ただし、それらが正常に呼び出されていることを確認するためにチェックしているのは明らかにそれだけではありません。

4

1 に答える 1

4

WriteObject で書き込んでいるオブジェクトは、Invoke()メソッド呼び出しを介して返されています。その呼び出しの結果を繰り返し処理して、コマンドレット呼び出しから個々のオブジェクトを取得します。

foreach (var result in _cmdlet1.Invoke())
{
    ...
}

詳細については、このMSDN トピックを参照してください。

于 2013-06-11T15:42:22.683 に答える