19Aug

Geek School: Oblikovanje učenja, filtriranje i uspoređivanje u PowerShellu

U ovom izdanju Geek škole gledamo na oblikovanje, filtriranje i uspoređivanje objekata u Cjevovodu.

Saznajte kako automatizirati sustav Windows pomoću PowerShell

  • Učenje pomoću Cmdleta u PowerShell
  • Učenje u korištenju objekata u PowerShell
  • I ostati ugođen za ostatak serije tijekom cijelog tjedna.

    Zadano formatiranje

    Kad sam prvi put krenuo s PowerShellom, mislio sam da je sve magija, ali istina je da je potrebno samo malo vremena da razumijemo što se događa ispod nape. Isto vrijedi i za sustav oblikovanja PowerShell. Zapravo, ako pokrenete cmdlet Get-Service, generirani output prikazuje samo 3 svojstva: Status, Naziv i DisplayName.

    Ali ako cijepite Get-Service Get-Memberu, vidjet ćete da objekti ServiceControllera imaju mnogo više od ovih tri svojstva pa što se događa?

    Odgovor leži u skrivenoj datoteci koja definira kako većina ugrađenih cmdleta prikazuje svoj izlaz. Da biste dobili razumijevanje, upišite sljedeće u ljusku i pritisnite enter.

    Notepad C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml

    Ako koristimo funkciju Finda u notepadu, možemo brzo preskočiti do odjeljka koji detaljuje izlaz cmdleta Get-Service pretraživanjem ServiceControlleratip.

    Odjednom možete vidjeti da ispod konopa PowerShell oblikuje objekte u Pipelineu koji su tipa ServiceController i stvaraju tablicu s tri stupca: Status, Naziv i DisplayName. Ali što ako tip s kojim se bavite nema ulaz u tu datoteku ili bilo koju drugu datoteku formata za to? Pa, zapravo, zapravo je vrlo jednostavno. Ako objekt koji izlazi iz cjevovoda ima 5 ili više svojstava, PowerShell prikazuje sve svojstva objekta na popisu;ako ima manje od 5 svojstava, prikazuje ih u tablici.

    Oblikovanje podataka

    Ako niste zadovoljni zadanim oblikovanjem objekta ili vrste, možete zakotriti svoje oblikovanje. Za to morate znati tri cmdleta.

    • Format-Popis
    • Format-Tab
    • Format Wide

    Format Wide jednostavno uzima zbirku objekata i prikazuje pojedinačno svojstvo svakog objekta. Prema zadanim postavkama, tražit će naziv entiteta;ako vaši objekti ne sadrže naziv svojstva, ona će koristiti prvo svojstvo objekta nakon što su svojstva poredana abecednim redom.

    Get-Service |Format Wide

    Kao što možete vidjeti, on također zadane postavke za dva stupca, iako možete odrediti oba svojstva koju želite koristiti, kao i koliko stupaca želite prikazati.

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

    Ako je nešto prema zadanim postavkama oblikovano kao tablica, uvijek ga možete prebaciti na prikaz popisa pomoću cmdleta Format-List. Pogledajmo izlaz cmdeta Get-Processa.

    Ovaj tablični prikaz jako dobro odgovara ovakvoj vrsti informacija, ali pretpostavimo da ga želimo pogledati u obliku popisa. Sve što zaista moramo učiniti je cijev na Format-List .

    Get-Process |Format-popis

    Kao što vidite, zadano se prikazuju samo četiri stavke na popisu. Da biste vidjeli sva svojstva objekta, možete upotrijebiti znak zamjenskih znakova.

    Get-Process |Format-List -Property *

    Alternativno, možete odabrati samo željene osobine.

    Get-Process |Format-Popis-naziv objekta, ID

    Format-Tablica, s druge strane, uzima podatke i pretvara ga u tablicu. Budući da su naši podaci iz Get-Procesa već u obliku tablice, možemo ga koristiti za jednostavno odabiranje željenih svojstava prikazanih u tablici. Koristio sam parametar AutoSize kako bi svi podaci odgovarali na jedan zaslon.

    Get-proces |Format-Naziv tablice, id -AutoSize

    Filtriranje i uspoređivanje

    Jedna od najboljih stvari o korištenju cjevovoda na temelju objekta jest da možete filtrirati objekte iz cjevovoda u bilo kojoj fazi pomoću cmdleta Where-Object.

    Get-Service |Gdje-Objekt{ $ _. Status -jo "Pokreće"}

    Korištenje gdje je objekt zapravo vrlo jednostavan.$ _ predstavlja trenutačni objekt cjevovoda, od kojeg možete odabrati entitet na koji želite filtrirati. Ovdje su samo čuvali objekte gdje je Status svojstvo jednako Trčanje. Postoji nekoliko operatera za usporedbu koje možete koristiti u bloku skripte za filtriranje:

    • eq( jednako)
    • neq
    • gt( veće od)
    • ge( veće ili jednako)
    • lt( manji od)
    • le( manje od ili jednako)
    • sličan( podudaranje s podudaranjem znakova)

    Potpuni popis i više informacija možete pogledati u konceptualnoj datoteci help_conparison, međutim potrebno je neko vrijeme da se naviknete na sintaksu Where-Obeject. To je sve za ovo vrijeme!