Не забравяйте да прочетете предишните статии в серията:
- Научете как да автоматизирате Windows с PowerShell
- Научете как да използвате Cmdlets в PowerShell
- Учене как да използвате обекти в PowerShell
И останете настроени за останалата част от серията през цялата седмица.
Форматиране по подразбиране
Когато за първи път започнах с PowerShell, мислех, че всичко е магическо, но истината е, че отнема малко време, за да разберем какво се случва под капака. Същото важи и за системата за форматиране PowerShell. Всъщност, ако стартирате cmdlet Get-Service, генерираният изход показва само 3 свойства: Status, Name и DisplayName.
notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml
Ако използваме функцията Find на Notepad, можем бързо да преминем към секцията, която детайлизира изхода на cmdlet на Get-Service чрез търсене на типа ServiceController.
Форматиране на данните ви
Ако не сте доволни от форматирането по подразбиране на обект или тип, можете да преместите собственото си форматиране. Има три команди, които трябва да знаете, за да направите това.
- Формат-Списък
- Формат-таблица
- Формат-Wide
Формат-Wide просто взима колекция от обекти и показва единично свойство на всеки обект. По подразбиране тя ще търси име на собственост; ако обектите ви не съдържат свойство за име, то ще използва първото свойство на обекта веднага след като имотите бъдат сортирани по азбучен ред.
Get-Service | Format-Wide
Get-Service | Format-Wide -Property DisplayName -Column 6
Този табличен изглед действително отговаря на този вид информация много добре, но нека се преструваме, че искаме да го разгледаме в списък. Всичко, което наистина трябва да направим, е да го изхвърляме Формат-Списък.
Get-Process | Format-List
Get-Process | Format-List –Property *
Get-Process | Format-List –Property name,id
Формат-маса, от друга страна, взема данни и ги превръща в таблица. Тъй като нашите данни от Get-Process вече са под формата на таблица, можем да я използваме, за да изберете лесно собственостите, които желаем да бъдат показани в таблицата. Използвах параметъра AutoSize, за да направя всички данни да се поберат на един екран.
Get-Process | Format-Table name,id –AutoSize
Филтриране и сравняване
Едно от най-хубавите неща за използването на обект-базиран тръбопровод е, че можете да филтрирате обекти от тръбопровода на всеки етап, използвайки командата Where-Object.
Get-Service | Where-Object {$_.Status -eq “Running”}
- eq (Equal To)
- neq (не е равно на)
- gt (по-голямо от)
- ge (по-голямо от равно или равно)
- Това (по-малко от)
- ле (по-малко или равно)
- като (мач със символа за заместващи символи)
Пълният списък и повече информация могат да се видят в концептуалния файл за помощ, но не отнема известно време да се използва за синтаксиса "Къде-обект". Това е всичко за това време!