Как отобразить вывод в столбцах без использования таблиц или лишних пробелов? - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу, чтобы мой скрипт выводил обновления состояния во время работы.Это простой скрипт, который устанавливает базовые компоненты как можно более автоматически (к сожалению, не полностью без присмотра).

Как вы видите ниже, как я это делал.Я хочу, чтобы он был очень удобочитаемым, поскольку я, вероятно, не единственный, кто собирается использовать этот сценарий.

Я хочу отобразить два столбца.Один с сообщением о том, что произошло, и другой с тем, к чему он применяется.

Я не верю, что таблицы будут работать, так как я хочу, чтобы он выводил каждую строку индивидуально в случае, если одна из них на самом деле терпит неудачу достаточно сильно для сбоясценарий или что-то в этом роде.Насколько мне известно, таблицы выводятся одновременно.

В настоящее время я использую строки с избытком пробелов.Это работает, но я чувствую, что должен быть более элегантный способ сделать это.Способ, которым я могу просто передать что-то кучу строк, найти длину самой длинной и добавить все пробелы, необходимые для их одинаковой длины.

Текущие переменные

$Already    = "Already Installed  "
$Installing = "Installing         "
$Installed  = "Installed          "
$Run        = "Run                "
$Warning    = "WARNING            "
$Failed     = "FAILED             "
$NotFound   = "NOT FOUND          "
$SWhatIf    = "WhatIf             "

Желаемый выход

Write-Host "${Installing}Google Chrome"
Installing         Google Chrome
Write-Host "${Already}Adobe Reader"
Already Installed  Adobe Reader
Write-Host "${Run}7-Zip"
Run                7-Zip

1 Ответ

1 голос
/ 26 сентября 2019

Вы можете выбрать создание Hashtable вместо отдельных переменных и установить все значения одинаковой длины.Примерно так:

$actions = @{
    Already    = "Already Installed"
    Installing = "Installing"
    Installed  = "Installed"
    Run        = "Run"
    Warning    = "WARNING"
    Failed     = "FAILED"
    NotFound   = "NOT FOUND"
    WhatIf     = "WhatIf"
}
# get the length of the longest value
$longest = ($actions.Values | Measure-Object -Property Length -Maximum).Maximum
# next update the values of the hashtable so all get the same length
foreach($key in $($actions.keys)){
    $actions[$key] = ($actions[$key]).PadRight($longest, ' ')
}

Затем используйте этот $actions хеш-код:

Write-Host "$($actions['Installing']): Google Chrome"
Write-Host "$($actions['Already']): Adobe Reader"
Write-Host "$($actions['Run']): 7-Zip"

Вывод:

Installing       : Google Chrome
Already Installed: Adobe Reader
Run              : 7-Zip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...