Geek School: форматиране на обучение, филтриране и сравнение в PowerShell

Съдържание:

Geek School: форматиране на обучение, филтриране и сравнение в PowerShell
Geek School: форматиране на обучение, филтриране и сравнение в PowerShell

Видео: Geek School: форматиране на обучение, филтриране и сравнение в PowerShell

Видео: Geek School: форматиране на обучение, филтриране и сравнение в PowerShell
Видео: Microsoft PowerShell for Beginners - Video 1 Learn PowerShell - YouTube 2024, Ноември
Anonim
В това издание на Geek School разглеждаме форматирането, филтрирането и сравняването на обектите в тръбопровода.
В това издание на Geek School разглеждаме форматирането, филтрирането и сравняването на обектите в тръбопровода.

Не забравяйте да прочетете предишните статии в серията:

  • Научете как да автоматизирате Windows с PowerShell
  • Научете как да използвате Cmdlets в PowerShell
  • Учене как да използвате обекти в PowerShell

И останете настроени за останалата част от серията през цялата седмица.

Форматиране по подразбиране

Когато за първи път започнах с PowerShell, мислех, че всичко е магическо, но истината е, че отнема малко време, за да разберем какво се случва под капака. Същото важи и за системата за форматиране PowerShell. Всъщност, ако стартирате cmdlet Get-Service, генерираният изход показва само 3 свойства: Status, Name и DisplayName.

Но ако подготвите Get-Service за Get-Member, ще видите, че обектите на ServiceController имат много повече от тези три свойства, така че какво става?
Но ако подготвите Get-Service за Get-Member, ще видите, че обектите на ServiceController имат много повече от тези три свойства, така че какво става?
Отговорът е в скрит файл, който определя как повечето от вградените команди показват изхода си. За да получите разбиране, въведете следното в черупката и натиснете Enter.
Отговорът е в скрит файл, който определя как повечето от вградените команди показват изхода си. За да получите разбиране, въведете следното в черупката и натиснете Enter.

notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml

Ако използваме функцията Find на Notepad, можем бързо да преминем към секцията, която детайлизира изхода на cmdlet на Get-Service чрез търсене на типа ServiceController.

Изведнъж можете да видите, че под капака PowerShell форматира всички обекти в тръбопровода, които са от типа ServiceController и създава таблица с три колони: Status, Name и DisplayName. Но какво ще стане, ако типът, с който се занимавате, не съдържа запис в този файл или друг форматиран файл? Е, тогава всъщност е съвсем просто. Ако обектът, излизащ от тръбопровода, има 5 или повече свойства, PowerShell показва всички свойства на обекта в списък; ако има по-малко от 5 свойства, тя ги показва в таблица.
Изведнъж можете да видите, че под капака PowerShell форматира всички обекти в тръбопровода, които са от типа ServiceController и създава таблица с три колони: Status, Name и DisplayName. Но какво ще стане, ако типът, с който се занимавате, не съдържа запис в този файл или друг форматиран файл? Е, тогава всъщност е съвсем просто. Ако обектът, излизащ от тръбопровода, има 5 или повече свойства, PowerShell показва всички свойства на обекта в списък; ако има по-малко от 5 свойства, тя ги показва в таблица.

Форматиране на данните ви

Ако не сте доволни от форматирането по подразбиране на обект или тип, можете да преместите собственото си форматиране. Има три команди, които трябва да знаете, за да направите това.

  • Формат-Списък
  • Формат-таблица
  • Формат-Wide
Image
Image

Формат-Wide просто взима колекция от обекти и показва единично свойство на всеки обект. По подразбиране тя ще търси име на собственост; ако обектите ви не съдържат свойство за име, то ще използва първото свойство на обекта веднага след като имотите бъдат сортирани по азбучен ред.

Get-Service | Format-Wide

Както виждате, той също така по подразбиране е в две колони, въпреки че можете да посочите както имота, който искате да използвате, така и колко колони искате да се показват.
Както виждате, той също така по подразбиране е в две колони, въпреки че можете да посочите както имота, който искате да използвате, така и колко колони искате да се показват.

Get-Service | Format-Wide -Property DisplayName -Column 6

Ако нещо е форматирано като таблица по подразбиране, винаги можете да го превключите в изглед на списък, като използвате кратката команда Format-List. Нека да разгледаме изхода на cmdlet Get-Process.
Ако нещо е форматирано като таблица по подразбиране, винаги можете да го превключите в изглед на списък, като използвате кратката команда Format-List. Нека да разгледаме изхода на cmdlet Get-Process.
Image
Image

Този табличен изглед действително отговаря на този вид информация много добре, но нека се преструваме, че искаме да го разгледаме в списък. Всичко, което наистина трябва да направим, е да го изхвърляме Формат-Списък.

Get-Process | Format-List

Както виждате, в списъка са показани само четири елемента по подразбиране. За да видите всички свойства на обекта, можете да използвате заместващ знак.
Както виждате, в списъка са показани само четири елемента по подразбиране. За да видите всички свойства на обекта, можете да използвате заместващ знак.

Get-Process | Format-List –Property *

Друга възможност е да изберете само желаните от вас свойства.
Друга възможност е да изберете само желаните от вас свойства.

Get-Process | Format-List –Property name,id

Image
Image

Формат-маса, от друга страна, взема данни и ги превръща в таблица. Тъй като нашите данни от Get-Process вече са под формата на таблица, можем да я използваме, за да изберете лесно собственостите, които желаем да бъдат показани в таблицата. Използвах параметъра AutoSize, за да направя всички данни да се поберат на един екран.

Get-Process | Format-Table name,id –AutoSize

Image
Image

Филтриране и сравняване

Едно от най-хубавите неща за използването на обект-базиран тръбопровод е, че можете да филтрирате обекти от тръбопровода на всеки етап, използвайки командата Where-Object.

Get-Service | Where-Object {$_.Status -eq “Running”}

Използването на обекта всъщност е много проста. $ представлява текущия обект на тръбопровод, от който можете да изберете собственост, която искате да филтрирате. Тук са били само обекти, в които собствеността на Статус е равна на Running. Има няколко оператора за сравнение, които можете да използвате в блока за скриптове за филтриране:
Използването на обекта всъщност е много проста. $ представлява текущия обект на тръбопровод, от който можете да изберете собственост, която искате да филтрирате. Тук са били само обекти, в които собствеността на Статус е равна на Running. Има няколко оператора за сравнение, които можете да използвате в блока за скриптове за филтриране:
  • eq (Equal To)
  • neq (не е равно на)
  • gt (по-голямо от)
  • ge (по-голямо от равно или равно)
  • Това (по-малко от)
  • ле (по-малко или равно)
  • като (мач със символа за заместващи символи)

Пълният списък и повече информация могат да се видят в концептуалния файл за помощ, но не отнема известно време да се използва за синтаксиса "Къде-обект". Това е всичко за това време!

Препоръчано: