2

PowerShellを使用してファイルをサイレントにインストールしていますが、インストールの進行状況についてフィードバックを提供したいと思います。この情報はどこにも見つからないようです。これは私がexeを実行するために持っているコードです:

$exe = "wls1033_oepe111150_win32.exe"
$xmlLocation = Resolve-Path "silent_install.xml"
$xmlLocation = "-silent_xml=" + $xmlLocation
$installLogLoc = Resolve-Path "wls_install.log"
$installLogLoc = "-log=" + $installLogLoc
$AllArgs = @('-mode=silent', $xmlLocation, $installLogLoc)
$filePath = Resolve-Path $exe
$p = New-Object System.Diagnostics.Process
$p.StartInfo.Filename = $filePath
$p.StartInfo.Arguments = $AllArgs
$p.Start();
$p.WaitForExit();

これを行う方法さえありますか?exeをインストールする別のコマンドウィンドウで抽出プロセスの進行状況メーターを取得しますが、それ以外は、何も表示されずに約10分間そこに留まります。

編集:これは不可能なので、exeの実行中に非同期パイプライン呼び出しを行う方法はありますか?

ありがとう

4

1 に答える 1

2

私が間違っている場合は訂正してください。しかし、これは不可能であると99%確信しています。exeファイルは別のプロセスであり、PowerShellスクリプトではありません。PowerShellセッションにステータスメッセージを渡すことはできません。唯一の可能性は、セットアップログファイルを検出し、それを調整して、ログのキーワードに基づいてPowerShellのプログレスバーを更新することです。ただし、これは大きな作業であり、セットアップファイルごとにカスタマイズする必要があります。

私はあなたのexeファイルを調べて、サイレントオプションの代わりに使用できる「基本的なUI」(または同様のタイプ)モードがあるかどうかを確認しようとします。最後の選択肢は、そのようなオプションを使用してセットアップを再パッケージ化することです(プログレスバーのみでインストールを自動化します)。このソリューションでも、進行状況バーは別のウィンドウにのみ表示され、PowerShell自体には表示されません。

于 2013-02-06T21:45:26.043 に答える