System Center Orchestratorを使用してPowerShellスクリプトを実行しています。スクリプトを実行するコンポーネントは、Write-Output
とWrite-Host
の結果をフェッチできますが、他のストリームは失われます。しかし、私は実際に他のストリーム、特に標準エラーストリームを利用したいと思います。PowerShellのスクリプト内のスクリプト全体の出力リダイレクトを設定しますか?
stderr
〜stdout
のリダイレクトを設定する方法はありますか。
2>&1
を実行する個々のコマンドでこれを行うことができますが、スクリプトにはかなりの数の行があるため、スクリプトのすべての行にこれを追加するのは面倒です。私はスクリプト内でスクリプトを実行することができましたが、それは他のいくつかの問題につながります。私の推測では、C#を使用してこれを設定することが可能でなければならないだろうが、私はその場合何を探すべきか分からない。
'-redirectstandarderror'パラメータを指定して' start-process'コマンドレットを使用してスクリプトを 'powershell.exe'の別の呼び出しにラップすると、それらのストリームを取得できます。ラッパースクリプトは、すべてのストリームを解析する必要があります。私は、あなたがパワーシェルの中でパワーシェルを実行し、それが完了するのを待っている場合、どのような問題が発生するのだろうと思いますか? – Vesper
Orchestrator内のPowerShellはネストのない頭痛で十分です(ネイティブアクティビティは32ビットしか実行されません)。ネストされたPowerShellを起動すると、スクリプトを実行するアクティビティは失敗しません。あなたがデフォルトでコンソール出力を得ないので、あなたのスクリプトに何が問題になったのか不思議に思うでしょう。一方、出力を得るインテグレーションパックはありますが、データバスに配置するアイテムに変数を直接マップする機能がありません。これはPowerShellの問題ではなく、PowerShellと実行を実行するコンポーネント間のやりとりです。 – Seth