Koduleht » kuidas » Geek School Learning Kuidas kasutada objekte PowerShellis

    Geek School Learning Kuidas kasutada objekte PowerShellis

    Objektide mõistmine on üks peamisi mõisteid PowerShelli saamisel. Liitu meiega, kui me uurime objekte ja kuidas nad teevad PowerShelli paremini kui ükski teine ​​täna olemas olev ümbris.

    Lugege kindlasti seeria eelmisi artikleid:

    • Lugege, kuidas Windowsi PowerShelli abil automatiseerida
    • Õppimine kasutama Cmdleti PowerShellis

    Ja hoia ülejäänud sarja jaoks terve nädal.

    Objektid

    Kas te olete kunagi mõelnud, mis seab PowerShelli peale traditsioonilise Linuxi kesta nagu Bash või isegi pärandkäsu? Vastus on tõesti lihtne: traditsioonilised kestad väljastavad teksti, mistõttu on keeruline teha selliseid asju nagu vormindamine ja filtreerimine. Muidugi on olemas tööriistu, mis aitavad teil tööd teha (sed ja grep tulevad meelde), kuid päeva lõpus, kui soovite teha mis tahes rasket teksti parsimist, peate teadma tavalisi väljendeid nagu käe taga.

    PowerShell kasutab ära .Net raamistiku ja võtab teistsuguse lähenemise, kasutades objekte, mitte teksti. Objektid kujutavad endast midagi. Need on osade kogum ja tegevused nende kasutamiseks. Vaatame jalgratta osi ja seda, kuidas neid kasutada.

    .Net-objektid on palju samad, välja arvatud kaks väikest erinevust: nimetatakse “Parts” omadused ja juhised on kutsutud meetodid. Kui soovisime Windows teenust objektina esindada, võime otsustada, et seda on vaja kirjeldada kolme omaduse abil: teenuse nimi, olek ja kirjeldus. Me peame ka teenusega suhtlema, nii et me võiksime anda objektile Start, Stop ja Pause.

    Objekti omadusi ja meetodeid näete, saates selle Get-Member cmdletile. Objektid, mida PowerShelli cmdlet-väljundid on .Net-raamistiku põhitüüpidena, kuid saate luua oma objekte, kui teil on vaja kasutada sellist keelt nagu C # või kasutada PSObjecti tüüpi.

    Torujuhe

    Torujuhtmega on palju Linuxi kestasid, mis võimaldavad saata teksti, mille üks käsk väljendab, et sisestada järgmine juhtmestik. PowerShell võtab selle järgmisele tasandile, lubades teil võtta ühe cmdleti väljundiga objektid ja edastada need sisendina järgmisele cmdletile torujuhtmes. Trikk on teada, millist tüüpi objekti cmdlet naaseb, mis on Get-Member cmdleti kasutamisel tõesti lihtne.

    Get-Service Get-Member

    Käesoleva artikli kohaldamisalast väljapoole jäävatel põhjustel nimetatakse omadusi ja meetodeid ühiselt klassi liikmeteks, mis selgitab, miks kasutate Get-Member cmdleti, et saada nimekiri kõigist objektidest ja meetoditest. Samas tagastab Get-Member cmdlet veel ühe olulise teabe, selle aluseks oleva objekti tüübi. Ülaltoodud pildil näeme, et Get-Service tagastab tüübi objektid:

    System.ServiceProcess.ServiceController

    Kuna PowerShell tegeleb objektide ja mitte tekstiga, ei saa kõiki cmdlete toruga ühendada [1]. See tähendab, et peame leidma torujuhtmest cmdleti, mis soovib System.ServiceProcess.ServiceControlleri objekti vastu võtta.

    Get-Command -ParameterType System.ServiceProcess.ServiceController

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

    Get-Help -Nimi Stop-Service

    Näib, et parameeter InputObject võtab sisendina hulga ServiceControlleri objekte. Tavaliselt, kui näete parameetrit nimega InputObject, võtab ta vastu torujuhtme sisendi, kuid ainult selleks, et olla kindel, et vaatame selle parameetri täielikku abi.

    Get-Help -Nimi Stop-Service - Täielik

    Meie kahtlused olid õiged. Niisiis teame siinkohal järgmist:

    • Get-Service tagastab ServiceControlleri objektid
    • Stop-Service'il on parameeter nimega InputObject, mis võtab sisendina vastu ühe või mitu ServiceControllerit.
    • Parameeter InputObject võtab vastu torujuhtme sisendi.

    Seda teavet kasutades saame teha järgmist:

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

    See on kõik selleks ajaks inimesed. Järgmisel korral vaatame, kuidas suudame torujuhtmes olevaid objekte vormindada, filtreerida ja võrrelda.

    Kodutöö

    • Loe üles Objekti torustik

    Kui teil on küsimusi, võite mulle @taybgibb või lihtsalt kommenteerida.