PowerShell - Monitore WindowSize de um script em execução

PowerShell - Monitore WindowSize de um script em execução

Eu tenho um script com uma UI simples baseada em Write-Progress.

Por exemplo, um separador:

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

Gostaria de ajustar esse separador sempre que o WindowSize for alterado, mas não consigo encontrar uma maneira de monitorar o script em segundo plano.

Sinto que algo assim deveria funcionar dentro de uma função ou trabalho:

while ($true) {

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

        $ui_seperator = '_' * $window_width

    }
}

Porém, funções e jobs são algo sobre os quais pouco ou nada sei e não consegui encontrar nenhuma solução para alcançar o resultado desejado. Qualquer ajuda é apreciada! :)

Responder1

SimpleUI

O módulo SimpleUI melhora a facilidade de uso e a legibilidade do console do PowerShell e vem com alguns truques que contribuem para uma melhor experiência geral do console.

Entre outras coisas, apresenta uma largura de buffer estável, divisão correta de palavras, espaços iniciais, uma animação simples de três pontos e um prompt de usuário elegante com alguns recursos adicionais.

Para uma visualização, cole as seguintes linhas em ...

... PowerShell:

# 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').Conteúdo | Add-Content -Path .\SimpleUI.psm1 -Encoding UTF8 (Invoke-WebRequest -UseBasicParsing -Uri 'https://pastebin.com/raw/e0n3mWy0').Conteúdo | Add-Content -Path .\SimpleUIPreview.ps1 -Encoding UTF8 & .\SimpleUIPreview.ps1

...cmd:

:: 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 }"

Sinta-se à vontade para usar e modificar este módulo conforme desejar.

Você pode relatar problemas, dar feedback, sugerir recursos ou pedir ajuda enviando um email para:[e-mail protegido]

informação relacionada