PowerShell - 実行中のスクリプトのウィンドウサイズを監視する

PowerShell - 実行中のスクリプトのウィンドウサイズを監視する

に基づいたシンプルな UI を備えたスクリプトがありますWrite-Progress

区切り文字の例:

$ui_seperator = '_' * (Get-Host).UI.RawUI.WindowSize.Width

WindowSize が変更されるたびにこのセパレータを調整したいのですが、バックグラウンドでスクリプトを監視する方法が見つかりません。

次のようなものが関数またはジョブ内で機能するべきだと感じます。

while ($true) {

    if ($window_width -ne ($window_width = (Get-Host).UI.RawUI.WindowSize.Width)) {

        $ui_seperator = '_' * $window_width

    }
}

しかし、関数とジョブについては私はほとんど何も知らないので、望ましい結果を得るための解決策を見つけることができませんでした。どんな助けでも大歓迎です! :)

答え1

シンプルUI

SimpleUI モジュールは、PowerShell コンソールの使いやすさと読みやすさを向上させ、全体的なコンソール エクスペリエンスの向上に貢献するいくつかの機能を備えています。

とりわけ、安定したバッファ幅、正しい単語分割、先頭スペース、シンプルな 3 点アニメーション、およびいくつかの追加機能を備えた見栄えの良いユーザー プロンプトを備えています。

プレビューするには、次の行を貼り付けます...

... パワーシェル:

# This will download the SimpleUI module as well as a preview script and then start the latter (make sure script execution is allowed)

Set-Location $HOME\Downloads (Invoke-WebRequest -UseBasicParsing -Uri 'https://pastebin.com/raw/9RSusrvC').Content | Add-Content -Path .\SimpleUI.psm1 -Encoding UTF8 (Invoke-WebRequest -UseBasicParsing -Uri 'https://pastebin.com/raw/e0n3mWy0').Content | Add-Content -Path .\SimpleUIPreview.ps1 -Encoding UTF8 & .\SimpleUIPreview.ps1

... コマンド:

:: This will download the SimpleUI module as well as a preview script and then start the latter
PowerShell -ExecutionPolicy Unrestricted -NoProfile -Command "& { Set-Location $HOME\Downloads; (Invoke-WebRequest -UseBasicParsing -Uri 'https://pastebin.com/raw/9RSusrvC').Content | Add-Content -Path .\SimpleUI.psm1 -Encoding UTF8; (Invoke-WebRequest -UseBasicParsing  -Uri 'https://pastebin.com/raw/e0n3mWy0').Content | Add-Content -Path .\SimpleUIPreview.ps1 -Encoding UTF8; & .\SimpleUIPreview.ps1 }"

このモジュールは自由に使用し、必要に応じて変更してください。

問題を報告したり、フィードバックを提供したり、機能を提案したり、サポートを依頼したりするには、次の宛先にメールを送信してください:[メールアドレス]

関連情報