2013-03-28 8 views
5

デルファイでPowerShellスクリプトの出力にアクセスするには?PowerShellスクリプトの出力にアクセスする方法は?

私はSystem.Management.Automation.PowerShellと似たようなものを探していますが、ネイティブコードです。

具体的には、PSObjectのオブジェクトをPowerShellの呼び出しによって処理したいと思います。

PowerShellは.NETで書かれているので、私はDelphiアプリケーションで.NETフレームワークをホストする必要がありますか?

コンポーネントソースにPowerShell Objects Delphi Editionというライブラリがありますが、デモではXE2をサポートしていないため、マニュアルのホームページでライブラリを見つけることができません。

明確化:私はPowerShellを実行する方法を探していません。CreateProcessはこれで問題なく動作します。

+1

これを行うにはremObjects HYRDAを使うことができると思いますが、おそらくもっと簡単に.netでホスト部分を書き、TCP/IPソケット経由で.netホストサービスに接続するだけです。 –

+1

おそらく、これを行う最もシンプルでクリーンな方法は、Atozed CrossTalkです:http://www.atozed.com/CrossTalk/index.en.aspx –

+0

[Console](http://sourceforge.net/projects/console-devel) /?source = directory)プロジェクトはバッファ、ウィンドウ、マウスなどのコンソール入力/出力でも正常に動作しますが、C++で書かれていますが、コンソールUIプログラミングの良いスタートポイントになると思います:) – Abelisto

答えて

1

System.Management.Automation。*の周りにC++/CLIラッパーを作成し、string ExecutePowerShellScript(string script)のようなDLLエントリポイントを公開することができます。次に、DelphiからそのDLLエントリポイントを呼び出すことに問題はありません。

+0

問題は、 'PowerShell.Invoke'メソッドが返す' PSObject'オブジェクトを処理したいということです。 –

+0

@JensMühlenhoff返されたオブジェクトのプリミティブ情報(文字列、数値、boolなど)にアクセスするアクセサ関数(DLLエントリポイント)を作成できます。 –

+0

それはうまくいくかもしれませんが、C++/CLI側では余分な作業がたくさんあります。私はそれを調べます。 –

関連する問題