Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Командлети PowerShell для виведення даних.

Зазвичай в процесі роботи PowerShell генеруються деякі вихідні дані. Для виведення цих даних існують спеціальні Out-командлети (командлети, назва яких починається з Out-). Коли виконується команда PowerShell повертає дані, вони передаються по конвеєру на вхід Out-командлет, який обробляє їх і відправляє в пристрій виведення (на екран, у файл, на принтер і т.п.).

Для перегляду цих командлетів виконаємо команду:

Get-Command -Verb Out



Out-Host

командлети Out-Host служить для виведення даних на екран. Наприклад:

Get-Process powershell | Out-Host

Втім, додавати Out-Host в кінець команди зовсім необов'язково. В кінці конвеєра за замовчуванням знаходиться командлет Out-Default, який і перенаправляє всі в Out-Host.Тобто попередня команда еквівалентна команді:

Get-Process powershell | Out-Default

яка в свою чергу еквівалентна команді:

Get-Process powershell

Насправді механізм виведення ще заплутаніше. Як ви пам'ятаєте, результатом роботи PowerShell є об'єкти. Out-командлети не вміють працювати з будь-якими об'єктами, а тільки зі спеціальним типом об'єктів форматування, тому при отриманні об'єкта викликають один з командлетів форматування (Format- *).Format-командлет надає Out-Командлети об'єкти форматування, що описують порядок побудови вихідних даних, а Out-командлет відправляє їх в потрібний пристрій. Тобто при виконанні команди:

Get-Process powershell

насправді відпрацьовує команда:

Get-Process powershell | Format-Table | Out-Host



Хоча додавати Out-Host в кінець команди необов'язково, але в деяких випадках зручно .Наприклад він має ключ Paging, за допомогою якого можна організувати посторінковий висновок:

Get-Process | Out-Host -Paging



Out-File

Командлети Out-File перенаправляє вихідні дані в зазначений файл , наприклад:

Get-Process powershell | Out-File proc.txt

За замовчуванням дані в файлі перезаписувати.Заборонити перезапис існуючого файлу можна, вказавши ключ NoClobber, а якщо необхідно дописувати дані в існуючий файл, то можна використовувати ключ Append, який додає дані в кінець файлу:

Get-Process powershell | Out-File proc.txt -Append



Для виведення в файл можна використовувати скорочений синтаксис.Наприклад для запису:

Get-Process powershell> proc.txt

або для додавання в кінець файлу:

Get-Process powershell >> proc.txt

Out-GridView

командлети Out-GridView виводить дані у вигляді графічної таблиці, в якій їх можна відфільтрувати і відсортувати за потрібною ознакою. Для наочності можна вказати ключ Title, який буде відображатися в заголовку:

Get-Process | Out-GridView -Title processes



Починаючи стрет версії PowerShell Out-GridView підтримує ключ PassThru, що дозволяє передати отримані дані далі по конвеєру.Наприклад, можна вивести список процесів, в графічній оснащенні відібрати потрібні і передати їх Командлети Stop-Process, який зупинить обрані процеси:

Get-Process | Out-GridView -PassThru | Stop-Process



Out-Null

Командлети Out-Null використовується в тому випадку, якщо вихідні дані відображати не потрібно.Він відправляє отримані дані в пристрій NULL, тобто видаляє їх. Для прикладу візьмемо таку команду:

$ process = Get-WmiObject win32_process -Filter "Name = 'Notepad.exe'"
$ process.Terminate ()

Крім основного дії (зупинка процесу) вона виводить багато зайвої інформації. Щоб позбавиться від неї, відправимо висновок в Out-Null, наприклад так:

$ process.Terminate () | Out-Null

або так:

$ process.Terminate ()> $ null



Out-String

командлети Out-String перетворює вхідні дані в масив рядків. По суті Out-String перетворює об'єкти PowerShell в рядки, з якими далі можна працювати як зі звичайним текстом (форматувати, проводити пошук і т.п.).

Для прикладу виведемо процес, збережемо його в змінну $ a і подивимося тип даних:

$ a = Get-Process powershell
$ a.GetType ()

Потім згодуємо вміст Out-String а висновок збережемо в змінну $ b:

$ b = $ a | Out-String
$ b.Get-Type ()

Як видно з прикладу, на вході Out-String тип даних Process, а на виході String.



Out-String принципово відрізняється від інших out-командлетів. Оскільки звичайні out-командлети працюють з кінцевим результатом попередніх команд, то самі вони не проводять ніяких вихідних даних.Саме тому out-командлет зазвичай ставиться останнім в командному рядку, адже після нього в конвеєрі не залишається нічого, з чим можуть працювати інші командлети.

На відміну від них Out-String приймає об'єкти, перетворює їх в масив рядків і передає далі по конвеєру. За замовчуванням дані накопичуються і повертаються одним рядком, але за допомогою ключа Stream можна вказати висновок по окремому рядку для кожного об'єкта.

Для прикладу виведемо список системних служб з усіма властивостями і відформатуємо його у вигляді таблиці:

Get-Service | Format-Table -Property * -AutoSize

Оскільки ширина консолі межує 80 символами, то більшість даних буде обрізано, що не дуже здорово.



Щоб не обрізати висновок, направимо його в Out-String і збільшимо ширину:

Get-Service | Format-Table -Property * -AutoSize | Out-String -Width 1024

Тепер всі дані потрапили на екран, але все одно виглядає не дуже.



Исправим положення, передавши висновок Out-String Командлети Out-File:

Get-Service | Format-Table -Property * -AutoSize | Out-String -Width 1024 | Out-File service.txt

На виході отримуємо файл з таблицею потрібної ширини, а для перегляду є смуга прокрутки. Таким чином можна створювати і переглядати таблиці практично будь-якої ширини.



Out-Printer

Командлети Out-Printer перенаправляє висновок на принтер. Наприклад:

Get-Service | Format-Table -Property * -AutoSize | Out-File service.txt -Width +1024
Get-Content service.txt | Out-Printer



Висновок відправляється на принтер, заданий в системі за замовчуванням. Для вказівки альтернативного принтера можна використовувати ключ Name..