19Aug

Geek skola: mācību formāts, filtrēšana un salīdzināšana PowerShell

Šajā izdevumā Geek skola, mēs skatāmies formatēšanu, filtrēšanu un salīdzināšanu objektus Pipeline.

Pārliecinieties, ka esat izlasījis iepriekšējos sērijas rakstus:

  • Uzziniet, kā automatizēt Windows ar PowerShell
  • . Mācīties lietot komandas PowerShell
  • . Mācīšanās lietot objektus PowerShell

. Pielāgojiet visas pārējās sērijas visas nedēļas laikā.

Noklusējuma formatēšana

Kad es pirmo reizi sāku darbu 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 izmantojat Get-Service pakalpojumam Get-Member, jūs redzat, ka ServiceController objektiem ir daudz vairāk nekā tikai šīs trīs īpašības, un 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ā ir aprakstīta Get-Service komandu izeja, meklējot ServiceControllertips

Pēkšņi jūs varat redzēt, ka zem kapuces PowerShell noformē jebkādus objektus Pipeline, 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ā.

Jūsu datu formatēšana

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-List
  • Format-Table
  • Format-Wide

Format-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 |Formāts-Wide

Kā jūs varat redzēt, tā arī noklusējusi divas kolonnas, lai gan jūs varat norādīt, kuru īpašumu vēlaties izmantot, kā arī, cik kolonnu vēlaties parādīt.

Get-Service |Format-Wide-Properties DisplayName-6. klauzula

Ja pēc noklusējuma kāds tiek formatēts kā tabula, to vienmēr varat pārslēgt uz saraksta skatījumu, 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 formā.Viss, kas mums patiešām ir jādara, ir caurtīt to formātu sarakstam .

iegūšanas process |Formāta saraksts

Kā redzat, pēc noklusējuma sarakstā tiek parādīti tikai četri vienumi. Lai apskatītu visas objekta īpašības, varat izmantot aizstājējzīmi.

Get-Process |Format-List-Properties *

Varat arī izvēlēties tieši nepieciešamās īpašības.

iegūšanas process |Format-List-Īpašuma nosaukums, id

Formāta 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

filtrēšana un salīdzināšana Viena no labākajām lietām, izmantojot objektīvais cauruļvads, ir tas, ka jūs varat filtrēt objektus no cauruļvada jebkurā posmā, izmantojot Kurš-Objekta cmdlet.

Get-Service |Where-Object{ $ _. 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 skriptu blokā ir daži salīdzināšanas operatori:

  • eq( vienāds ar)
  • neq( nav līdzvērtīgs)
  • gt( lielāks nekā)
  • ge( lielāks par vai vienāds)
  • lt( mazāks par)
  • le( mazāks par vai vienāds ar)
  • kā( Wildcard String Match)

Pilnu sarakstu un vairāk informācijas var apskatīt salīdzināšanas konceptuālās palīdzības failā, tomēr tas aizņem kādu laiku, kad tiek izmantots Where-Obeject sintakse. Tas viss ir šoreiz!