Šajā izdevumā Geek skola, mēs skatāmies uz formēšanu, filtrēšanu un salīdzināšanu objektus Pipeline.
Noteikti izlasiet iepriekšējos sērijas rakstus:
Un visu nedēļu pieskarieties atlikušajām sērijām.
Kad es vispirms sāku darboties ar PowerShell, es domāju, ka viss ir maģija, bet patiesībā ir tikai nedaudz laika, lai saprastu, kas notiek zem kapes. Tas pats attiecas uz PowerShell formatēšanas sistēmu. Patiesībā, ja palaižat cmdlet Get-Service, ģenerētais produkts parādīs tikai 3 īpašības: Statuss, Nosaukums un DisplayName.
Bet, ja jūs mēģināt Get-Service Get-dalībnieks, jūs redzat, ka ServiceController objektiem ir daudz vairāk nekā tikai šīs trīs īpašības, tad kas notiek?
Atbilde atrodas slēptā failā, kas nosaka, kā lielākā daļa iebūvēto cmdletu parādīs to izvadi. Lai iegūtu izpratni, lodziņā ierakstiet šādus un nospiediet enter.
notepad C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml
Ja mēs izmantojam Notepad funkciju Atrast, mēs varam ātri pāriet uz sadaļu, kurā aprakstīta Get-Service komandu izeja, meklējot Type ServiceController.
Pēkšņi varat redzēt, ka zem kapuces PowerShell noformē jebkādus maršruta objektus, kas ir ServiceController tipa, un izveido tabulu ar trīs slejām: Statuss, Nosaukums un DisplayName. Bet ko tad, ja ar veidu, ar kuru jums ir darīšana, šajā failā nav ieraksta vai kāda cita formāta faila? Nu tad tas ir pavisam vienkārši. Ja objektam, kas iziet no cauruļvada, ir 5 vai vairāk īpašības, PowerShell sarakstā parāda visas objekta īpašības; ja tam ir mazāk par 5 īpašībām, tas tos parāda tabulā.
Ja neesat apmierināts ar noklusēto objekta vai tipa formatējumu, varat mainīt savu formātu. Lai to izdarītu, ir trīs cmdlets, kas jums jāzina.
Formatēt-Wide vienkārši ņem objektu kolekciju un parāda katra objekta vienu īpašumu. Pēc noklusējuma tā meklēs nosaukuma īpašumu; ja jūsu objektos nav nosaukuma īpašuma, tā izmantos objekta pirmo īpašumu, tiklīdz rekvizīti ir sakārtoti alfabētiskā secībā.
Get-Service | Formatēt-Wide
Kā jūs varat redzēt, tā arī noklusējusi divas kolonnas, lai gan jūs varat norādīt gan to īpašumu, kuru vēlaties izmantot, gan arī skaitu kolonnu, kuras vēlaties parādīt.
Get-Service | Format Wide-Properties DisplayName-6. sleja
Ja kaut kas pēc noklusējuma tiek formatēts kā tabula, to vienmēr varat pārslēgt saraksta skatam, izmantojot cmdlet Format-List. Apskatīsim Get-Process cmdlet produkciju.
Šis tabulas skats patiesībā atbilst šai informācijai ļoti labi, taču izlikšies, ka vēlamies to skatīt saraksta veidā. Viss, kas mums patiešām ir jādara, ir to caurlaide Formātu saraksts.
Get-Process | Formātu saraksts
Kā redzat, pēc noklusējuma sarakstā tiek rādīti tikai četri vienumi. Lai apskatītu visas objekta īpašības, varat izmantot aizstājējzīmi.
Get-Process | Formāts-saraksts-īpašums *
Varat arī izvēlēties tieši vajadzīgās īpašības.
Get-Process | Formāta saraksts-īpašumtiesības nosaukums, id
Formāts-tabula no otras puses, ņem datus un pārvērš to tabulā. Tā kā mūsu dati no Get-Process jau ir tabulas veidā, mēs varam to izmantot, lai viegli izvēlētos tabulā redzamos īpašumus. Es izmantoju parametru AutoSize, lai visi dati būtu piemēroti vienam ekrānam.
Get-Process | Formāta tabulas nosaukums, id-AutoSize
Viena no labākajām lietām par objektīva cauruļvada izmantošanu ir tā, ka jūs jebkurā posmā varat filtrēt objektus no cauruļvada, izmantojot Kurš-Objekta cmdlet.
Get-Service | Kur objekts $ _. Status -eq "Running")
Lietošana, ja objekts tiešām ir ļoti vienkāršs. $ _ norāda pašreizējo cauruļvada objektu, no kura jūs varat izvēlēties īpašumu, kuru vēlaties filtrēt. Šeit tika turēti tikai objekti, kuru statusa īpašums ir vienāds ar Running. Filtrēšanas skripta blokā varat izmantot dažus salīdzināšanas operatorus:
Pilnu sarakstu un plašāku informāciju var apskatīt salīdzināšanas konceptuālās palīdzības failā, tomēr tas aizņem laiku, lai kļūtu izmantots kur-Obejekta sintaksē. Tas viss ir šoreiz!