Форматування виведення в PowerShell.
Досить часто потрібно запросити будь-які дані і вивести їх у вигляді таблиці. PowerShell надає для цього безліч способів, деякі з яких ми сьогодні розглянемо.
Для прикладу візьмемо командлет Get-Process, який, будучи запущеним без параметрів, повертає всі запущені в системі процеси в вигляді готової таблиці.Виведемо з його допомогою процеси, які споживають найбільшу кількість процесорного часу:
Get-Process | where {$ _. CPU -gt 10000}
Для більшої наочності відсортуємо отримані процеси по споживанню процесорного часу в порядку убування:
Get-Process | where {$ _. CPU -gt 10000} | sort CPU -Desc
За замовчуванням Get-Process виводить певний фіксований набір стовпців.Давайте перевизначити його і виведемо тільки потрібні нам стовпці, наприклад процесорний час (CPU), ідентифікатор (ID) і ім'я (ProcessName) процесу:
Get-Process | where {$ _. CPU -gt 10000} | sort CPU -Desc | ft CPU, ID, ProcessName -auto
Припустимо, що нам потрібно отримати якісь небудь особливі параметри , відсутні в стандартному виведення.Подивитися наявні параметри можна за допомогою порядкового виводу, наприклад так ми виведемо всі властивості процесу lsass:
Get-Process lsass | fl *
А тепер додамо в висновок опис процесу (Description):
Get-Process | where {$ _. CPU -gt 10000} | sort CPU -Desc | ft CPU, ProcessName, Description -auto
Ну і якщо вас не влаштовують стандартні параметри, можна створити свій власний стовпець.Для прикладу створимо стовпець з ім'ям «Process name» і помістимо його в змінну:
$ p = @ (Expression = {$ _. Name}; Label = "Process name"; width = 30}
Тут Expression - це вираз, який визначає значення параметра, Label - назва стовпчика, а width - його ширина.
Отриману змінну потім можна додати в висновок як звичайний параметр:
Get-Process | where {$ _.CPU -gt 10000} | sort CPU -Desc | ft CPU, $ P, Description -auto
За допомогою Expression можна виробляти практично будь-які перетворення. Наприклад, потрібно округлити процесорний час до цілого числа, для чого скористаємося статичним класом методом Round класу [math]:
$ c = @ (Expression = {[math] :: Round ($ _.CPU, 0)}; Label = "CPU time"}
І потім додамо отримане значення в таблицю:
Get-Process | where {$ _. CPU -gt 10000} | sort CPU -Desc | ft $ C, $ P, Description -auto
Таким чином можна організувати висновок потрібної інформації в зручному для себе вигляді.
.