Справка по формату: последняя переменная не отображается должным образом

Я написал код, который отправляет кому-то электронное письмо. Они также попросили выводить данные на экран при каждом запуске кода. Я использовал командлет Write-Host, как показано ниже.

Write-Host "server: $serverName `t ipaddress: $ipAddressValue `t process: $processName `t status: $statusString"

данные поступают в PowerShell, все по прямой линии, как и должно быть, за исключением последней переменной $statusstring, результаты статуса появляются в разных строках и не в том же порядке, что и другие 3 переменные.

  • процесс: TestTrack Статус сервера: Выполняется

  • процесс: статус журнала событий: Выполняется

  • процесс: статус WMSVC: остановлен

  • процесс: TFSJobAgent статус: Выполняется

  • процесс: Статус DHCP: Выполняется

  • статус процесса UI0Detect: Остановлен

Есть идеи, как я могу получить статус, чтобы все было по прямой?


person Osman Farooq    schedule 01.06.2016    source источник
comment
Ты умеешь $statusString.GetType().Name?   -  person Andrey Marchuk    schedule 01.06.2016
comment
Это ничего не сделало, но я только что наткнулся на что-то. Если я перемещаю status: $ statusString перед любой другой переменной, все в порядке, поэтому я не уверен, связано ли это с самой переменной statusString   -  person Osman Farooq    schedule 01.06.2016
comment
$ statusString = $ statusString.Remove (0, @ {Status = .Length) $ statusString = $ statusString.Remove ($ statusString.IndexOf (}))   -  person Osman Farooq    schedule 01.06.2016


Ответы (2)


Кажется, вам нужен табличный вывод. Почему бы не создать объекты и не использовать правильные командлеты форматирования?

$props = [ordered]@{
  server    = $serverName
  ipaddress = $ipAddressValue
  process   = $processName
  status    = $statusString.Trim()
}
$o = New-Object -Type PSObject -Property $props

Из объекта (или списка объектов) вы можете создать строковый вывод следующим образом:

$o | Format-Table | Out-String

или вывод HTML следующим образом:

$o | ConvertTo-Html
person Ansgar Wiechers    schedule 01.06.2016

Лучший вариант: прекратить использовать Write-Host. Вы не можете настроить вывод так, чтобы все отображались в одной строке с помощью этого командлета. Лучше создать собственный объект PSObject для построения вывода, а затем просто передать его Format-Table.

person Community    schedule 01.06.2016