web-dev-qa-db-ja.com

Invoke-WebRequestの進行状況を非表示

Invoke-WebRequestの進行状況表示を非表示にするにはどうすればよいですか?私は多くの連続したリクエストを行い、私が使用する独自のWrite-Progressディスプレイを持っているので、毎回その下にポップアップする組み込みのものを必要としません。

Invoke-WebRequestの結果から自動的に作成されるmshtmlの結果(IE COMオブジェクト)を使用するため、WebClientなどに切り替えることはできません。そのように、誰かがWebClientリクエストからmshtmlオブジェクトを取得する方法に関する指示を提供しない限り。

48
qJake

$ progressPreference変数を使用します。他の場所で編集していない限り、デフォルトで「継続」の値になっているはずです。これにより、Powershellに進行状況バーが表示されます。独自のカスタム進行状況表示があると述べたので、コマンドレットの実行後すぐにリセットします。例えば:

$progressPreference = 'silentlyContinue'    # Subsequent calls do not display UI.
Invoke-WebRequest ...
$progressPreference = 'Continue'            # Subsequent calls do display UI.
Write-Progress ...

about_preference_variables にある設定変数の詳細。 $ ProgressPreferenceのエントリは次のとおりです。

$ProgressPreference
-------------------
Determines how Windows PowerShell responds to progress updates 
        generated by a script, cmdlet or provider, such as the progress bars
        generated by the Write-Progress cmdlet. The Write-Progress cmdlet 
        creates progress bars that depict the status of a command.

        Valid values:
          Stop:               Does not display the progress bar. Instead,
                                it displays an error message and stops executing.

          Inquire:            Does not display the progress bar. Prompts
                                for permission to continue. If you reply
                                with Y or A, it displays the progress bar.

          Continue:           Displays the progress bar and continues with
          (Default)             execution.

          SilentlyContinue:   Executes the command, but does not display
                                the progress bar.
68
Anthony Neace