Кастомизация вывода в Powershell Write-Host


11 августа 2019


Powershell Write-Host - кастомизация вывода

Командлет Powershell Write-Host изменяет вид вывода. Мы можем добавить к объекту, который выводим цвет и немного изменить формат. 

Например так мы можем изменить цвет процессов:

Write-Host -Object "красный" -BackgroundColor White -ForegroundColor Red

Форматирование вывода Write-Host

Где:

  • ForegroundColor - изменение цвета шрифта
  • BackgroundColor  - изменение цвета заднего фона

Оба ключа могут принимать следующие значения:

  • Black
  • DarkBlue
  • DarkGreen
  • DarkCyan
  • DarkRed
  • DarkMagenta
  • DarkYellow
  • Gray
  • DarkGray
  • Blue
  • Green
  • Cyan
  • Red
  • Magenta
  • Yellow
  • White

Другая возможность это вывод результата без перевода строки:

Write-Host "Первая строка " -NoNewline -BackgroundColor DarkBlue
Write-Host " Вторая строка" -BackgroundColor Cyan

Nonewline Powershell Write-Host

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

Write-Host ('Один', 'Два', 'Три') -Separator "|" -ForegroundColor Blue -BackgroundColor White

Я не вижу вообще какой-либо надобности в этой команде. Ниже простой скрипт где я ее использовал:

#Пример использования Write-Host
cls
 
Write-Host "======" -noNewline
write-host " Меню " -foregroundcolor red -backgroundcolor yellow -noNewline
write-host "====="
Write-Host "1. " -noNewline
write-host "Учетки AD созданные за 5 дней" -foregroundcolor yellow
Write-Host "2. " -noNewline
write-host "Удаленные учетные записи AD" -foregroundcolor yellow
Write-Host "3. " -noNewline
write-host "дата входа пользователя" -foregroundcolor yellow
Write-Host "4. " -noNewline
write-host "Взломать пентагон" -foregroundcolor yellow
 
while (-not($choice -match "^[0-4]$"))
    {
    $choice = read-host "Сделайте выбор"
     }
 
switch ($choice)
    {
        1 {Get-ADUser -Filter * -Properties whenCreated | where {$_.whenCreated -ge (Get-Date).AddDays(-5)}}
        2 {Get-ADUser -Filter * -Properties isDeleted | where -Property isDeleted -EQ $true}
        3 {Get-ADUser -Filter * -Properties LastLogon | Sort-Object -Property {Get-Date $_.LastLogon}}
        4 {ping localhost}
    }

Как будет выглядеть скрипт:

Powershell Write-Host

Если вам интересно, то вы можете почитать о том как в Powershell получить список пользователей AD.

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.