Geek skolas mācīšanās formatēšana, filtrēšana un salīdzināšana PowerShell
Šajā Geek skolas izdevumā mēs aplūkojam cauruļvada objektu formatēšanu, filtrēšanu un salīdzināšanu.
Noteikti izlasiet iepriekšējos sērijas rakstus:
- Uzziniet, kā automatizēt Windows ar PowerShell
- Mācīšanās lietot Cmdlet PowerShell
- Mācīšanās lietot objektus PowerShell
Un visu nedēļu palieciet pārējo sēriju.
Noklusējuma formatēšana
Kad es pirmo reizi sāku ar PowerShell, es domāju, ka viss bija maģisks, bet patiesība ir tā, ka tikai nedaudz laika paiet, lai saprastu, kas notiek zem pārsega. Tas pats attiecas uz PowerShell formatēšanas sistēmu. Faktiski, ja palaižat pakalpojuma Get-Service cmdlet darbību, ģenerētais izvads parāda tikai 3 īpašības: statusu, nosaukumu un attēla nosaukumu.
Bet, ja jūs saņemat pakalpojumu Get-Service, lai iegūtu dalībnieku, jūs redzat, ka ServiceController objektiem ir daudz vairāk nekā tikai šīs trīs īpašības, tāpēc kas notiek?
Atbilde atrodas slēptajā failā, kas nosaka, kā lielākā daļa iebūvēto cmdlet parāda to izeju. Lai iegūtu sapratni, ierakstiet čaulā sekojošo un nospiediet Enter.
Notepad C: Windows System32 WindowsPowerShell v1.0 DotNetTypes.format.ps1xml
Ja mēs izmantojam notepad meklēšanas funkciju, mēs varam ātri pāriet uz sadaļu, kas detalizēti apraksta cmdlet Get-Service izvadi, meklējot ServiceController veidu.
Pēkšņi jūs varat redzēt, ka zem pārsega PowerShell formatē visus cauruļvada objektus, kas ir ServiceController tipa un izveido tabulu ar trīs slejām: Status, Name un DisplayName. Bet kas notiks, ja tipam, ar kuru nodarbojas, nav ieraksta šajā failā vai kādā citā formāta failā? Nu, tad tas tiešām ir diezgan vienkārši. Ja objektam, kas iziet no cauruļvada, ir 5 vai vairākas īpašības, PowerShell parāda visus objekta rekvizītus sarakstā; ja tai ir mazāk par 5 īpašībām, tas tiek parādīts tabulā.
Datu formatēšana
Ja neesat apmierināts ar objekta vai veida noklusējuma formatējumu, varat izveidot savu formatējumu. Ir trīs cmdlet, kas jums jāzina, lai to izdarītu.
- Formātu saraksts
- Formāts-tabula
- Formāts - plašs
Formāts - plašs vienkārši aizņem objektu kolekciju un parāda vienu objektu. Pēc noklusējuma tā meklēs nosaukumu; ja jūsu objektos nav nosaukuma rekvizīta, tas pēc tam, kad īpašības ir sakārtotas alfabēta kārtībā, izmantos objekta pirmo īpašumu.
Get-Service | Formāts - plašs
Kā redzat, tā arī ir noklusēta uz divām slejām, lai gan jūs varat norādīt, kuru īpašumu vēlaties izmantot, kā arī to, cik kolonnu vēlaties rādīt.
Get-Service | Format-Wide -Property DisplayName -6. Sleja
Ja kaut kas ir formatēts kā tabula pēc noklusējuma, vienmēr varat to pārslēgt uz saraksta skatu, izmantojot cmdlet formātu sarakstu. Aplūkosim Get-Process cmdlet izvadi.
Šis tabulārais skatījums patiešām ir ļoti piemērots šādai informācijai, bet izliksim, ka mēs vēlamies to apskatīt saraksta formā. Viss, kas mums patiešām ir jādara, ir to nodot Formātu saraksts.
Get-Process | Formātu saraksts
Kā redzams, sarakstā pēc noklusējuma ir redzami tikai četri vienumi. Lai apskatītu visus objekta rekvizītus, varat izmantot aizstājējzīmes.
Get-Process | Formātu saraksts - īpašums *
Varat arī izvēlēties tikai vajadzīgās īpašības.
Get-Process | Format-List - Īpašuma nosaukums, ID
Formāts-tabula, no otras puses, iegūst datus un pārvērš tos par tabulu. Tā kā mūsu dati no Get-Process jau ir tabulas veidā, mēs varam to izmantot, lai viegli izvēlētos tabulā redzamos rekvizītus. Es izmantoju parametru AutoSize, lai visus datus ievietotu vienā ekrānā.
Get-Process | Formāts-tabulas nosaukums, id -AutoSize
Filtrēšana un salīdzināšana
Viena no labākajām lietām, izmantojot objektu balstītu cauruļvadu, ir tas, ka objektus var filtrēt no cauruļvada jebkurā posmā, izmantojot kur-Object cmdlet.
Get-Service | Kur-Objekts $ _. Statuss -qq “Running”
Lietošana, kur objekts ir ļoti vienkāršs. $ _ pārstāv pašreizējo cauruļvada objektu, no kura jūs varat izvēlēties īpašumu, kuru vēlaties filtrēt. Šeit tika saglabāti tikai objekti, kuros statusa īpašums ir vienāds ar darbību. Filtrēšanas skriptu blokā var izmantot dažus salīdzināšanas operatorus:
- eq (vienāds ar)
- neq (nav vienāds ar)
- gt (lielāks par)
- ge (lielāks vai vienāds)
- lt (mazāk nekā)
- le (mazāks vai vienāds)
- patīk (Wildcard String Match)
Pilnu sarakstu un vairāk informācijas var apskatīt about_comparison konceptuālajā palīdzības failā, tomēr tas aizņem kādu laiku, lai pierastu pie kur-Obeject sintakse. Tas viss šajā laikā!