18Aug

Geeki kool: PowerShellis objektide kasutamise õppimine

Objektide mõistmine on üks peamisi mõisteid PowerShelli "saamiseks".Ühinege meiega, kui uurime objekte ja kuidas nad PowerShelli täna paremini kui ükskõik millised muud kapslid.

Kindlasti loete seriaale eelnenud artikleid:

  • Õppige Windowsi automatiseerimine PowerShelli
  • -ga Õppige kasutama PowerShelli

-vormingus kommuteid Kasutage kogu seeria ülejäänud nädalat.

Objektid

Kas olete kunagi mõelnud, milline PowerShell seab peale traditsioonilise Linuxi shelli nagu Bash või isegi pärand käsureale? Vastus on tõesti lihtne: tavapäraste karpide väljundtekst, mis muudab keeruliseks näiteks vormindamise ja filtreerimise. Loomulikult on olemas tööriistad, mis aitavad teil tööd teha( sed ja grep meelde tulevad), kuid päeva lõpuks, kui soovite teha mis tahes rasket tekstisarvu, peate teadma regulaaravaldisi naguoma käe taga.

PowerShell kasutab aluseks olevat. Net-raamistikku ja võtab erineva lähenemise, kasutades objekte teksti asemel. Objektid on vaid midagi. Need on nende osade ja meetmete kogumik. Vaatame jalgratta osi ja kuidas neid neid kasutada.

Objektid on. Net on peaaegu samad, välja arvatud kaks väikest erinevust: osad on omadused ja "juhiseid" nimetatakse meetoditeks .Kui me tahaksime objektiks olevat Windowsi teenust esindada, võiksime otsustada, et on asjakohane kirjeldada seda kolme omadusega: teenuse nimi, riik ja kirjeldus. Samuti peame suhtlema teenusega, nii et me saaksime objektiks alustada, peatada ja peatada.

Näete objekti omadusi ja meetodeid, edastades selle käsku Get-Member cmdlet. Objektid, mille PowerShelli cmdlet väljundid on. Net-raamistikus suuresti aluseks olevad tüübid, aga saate luua oma objekte, kui peate kasutama sellist keelt nagu C # või PSObject tüüpi.

Pipeline

Seal on palju torujuhtmega Linuxi kestasid, mis võimaldavad saata teksti, mida üks käsu väljund on sisendiks järgmise käsu käsku. PowerShell võtab selle järgmisele tasemele, võimaldades teil võtta objektid, mis väljastavad üks cmdlet, ja edastama need sisendina järgmisse käskulas olevasse cmdletusse. Trikk on teada, millist tüüpi objekt saadab cmdletile, mis on tõesti lihtne Get-liik -i cmdleli kasutamisel.

Get-Service |Get-member

Käesoleva artikli kohaldamisalast väljapoole jäävatel põhjustel nimetatakse omadusi ja meetodeid ühiselt klassi liikmeteks, mistõttu kasutate käsku Get-Member, et saada nimekiri kõigist meetoditest ja omadustest, mille objektil on. Siiski tagastab käsk cmdlet Get-Member ka teise olulise informatsiooni, aluseks oleva objekti tüübi. Eespool toodud pildil näeme, et Get-Service tagastab tüübi objektid:

System. ServiceProcess. ServiceController

Kuna PowerShell tegeleb objektidega ja mitte tekstiga, ei saa kõiki pipelülid [1] kasutades kõiki cmdletusi omavahel ühendada. See tähendab, et peame leidma cmdlet, mis soovib süsteemi gaasijuhtme objekti System. ServiceProcess. ServiceController aktsepteerida.

Get-Command -ParameterType System. ServiceProcess. ServiceController

Pane tähele, et on olemas cmdlet Stop-Service;Vaatame abi selle eest.

Get-Help -nimi Stop-Service

Näib, et parameeter InputObject võtab sisendina kasutusele ServiceController-objektide massiivi. Tavaliselt, kui näete parameetrit, mille nimi on InputObject, aktsepteerib ta gaasijuhtme sisendit, kuid selleks, et olla kindel, vaatame selle parameetri täielikku abi.

Get-Help -nimi Stop-Service -Full

Meie kahtlused olid õiged. Nii et hetkel me teame järgmist:

  • Get-Service tagastab ServiceController objektid
  • Stop-Service on parameeter, mille nimi on InputObject, mis võtab sisendina vastu ühe või mitu ServiceControllersit.
  • Parameeter InputObject aktsepteerib gaasijuhtme sisendit.

Selle teabe abil saame teha järgmist:

Get-Service -Nimi Apple Mobile Device |Stop-Service

See on kõik selleks ajaks inimestele. Järgmine kord vaatame, kuidas me suudame torujuhtmes olevaid objekte vormindada, filtreerida ja võrrelda.

Kodune töö

  • Loe üles Objekti torujuhtmele

Kui teil on küsimusi, võite mulle kirja panna @ tybgibb või lihtsalt jätke kommentaar.