18Aug

Geek-koulu: oppii käyttämään esineitä PowerShellissä

Objektien ymmärtäminen on yksi keskeisistä käsitteistä "saada" PowerShell. Liity meihin, kun tutkimme esineitä ja miten he tekevät PowerShellistä paremman kuin missään muualla tänään.

Lue lisää aiempien artikkelien sarjassa:

  • Opi käyttämään Windowsia PowerShellin avulla
  • Learning to Use Cmdlets PowerShell

: ssä ja pysy kuulolla koko sarjan koko viikon ajan.

Objects

Oletko koskaan miettinyt, mikä asettaa PowerShellin perinteisen Linux-kuoren, kuten Bashin, vai edes vanhan komentokehotteen? Vastaus on todella yksinkertainen: perinteiset kuoret tuottavat tekstin, mikä vaikeuttaa esimerkiksi muotoilun ja suodatuksen. Tietenkin on työkaluja, joiden avulla voit saada työn( sed ja grep tulevat mieleen), mutta jos haluat tehdä minkä tahansa raskaan tekstin jäsentämisen, sinun täytyy tuntea säännölliset lausekkeet, kutenkätesi takana.

PowerShell hyödyntää taustalla olevaa. Net-kehystä ja ottaa toisenlaisen lähestymistavan käyttämällä objekteja tekstin sijasta. Esineet ovat vain esitys jotain. Ne ovat kokoelma osia ja toimia niiden käyttämiseksi. Katsotaanpa polkupyörän osia ja miten voimme käyttää niitä.

Objects in. Net ovat paljon samoja, lukuun ottamatta kahta pientä eroa: "Osat" kutsutaan -ominaisuuksiksi ja "Ohjeet" kutsutaan -menetelmiksi .Jos halusimme edustaa Windows-palvelua objektina, voimme päättää, että se on tarkoituksenmukaista kuvata sitä käyttämällä kolmea ominaisuutta: Palvelun nimi, tila ja kuvaus. Meidän on myös vuorovaikutuksessa palvelun kanssa, jotta voimme antaa objektille Start-, Stop- ja Pause-menetelmän.

Voit tarkastella objektin ominaisuuksia ja menetelmiä siirtämällä sen Get-Member-cmdlettiin. Objektit, jotka PowerShell-cmdlet-lähdöt ovat, ovat suurelta osin taustatyyppejä. Net-kehyksestä, mutta voit luoda omia objekteja, jos haluat käyttää C # -kielistä tai käyttää PSObject-tyyppiä.

Putki

Putkistoon on runsaasti Linux-kuoria, joiden avulla voit lähettää tekstin, jonka yksi komento tuottaa syötteeksi seuraavaan komentoon putkessa. PowerShell vie tämän seuraavalle tasolle antamalla sinun ottaa esineitä, jotka yksi cmdlet tulostaa ja siirtää ne syötteeksi seuraavaan cmdlettiin putkessa. Tämä temppu tietää, minkä tyyppistä esinettä cmdlet palauttaa, mikä on todella helppoa, kun käytät Get-jäsenen cmdletä.

Get-Service |Get-jäsen

Tämän artikkelin soveltamisalan ulkopuolisista syistä ominaisuuksia ja menetelmiä kutsutaan yhdessä luokan jäseniksi, mikä kertoo, miksi käytät Get-Member-cmdlet -ohjelmaa saadaksesi luettelon kaikista objektin tavoista ja ominaisuuksista. Get-Member-cmdlet palauttaa kuitenkin toisen tärkeän tiedon, joka perustuu kohdeobjektin tyyppiin. Edellä olevassa kuvakaappauksessa voimme nähdä, että Get-Service palauttaa tyypin kohteet:

System. ServiceProcess. ServiceController

Koska PowerShell käsittelee esineitä eikä tekstiä, kaikkia cmdletteja ei voi yhdistää putkilinjan avulla [1].Tämä tarkoittaa, että meidän on löydettävä cmdlet, joka haluaa hyväksyä System. ServiceProcess. ServiceController -objektin putkesta.

Get-Command -ParameterType System. ServiceProcess. ServiceController

Huomaa, että cmdlet nimeltä Stop-Service;Katsotaanpa sitä apua.

Get-Help -Name Stop-Service

Näyttää siltä, ​​että InputObject-parametri ottaa joukon ServiceController -objekteja syötteeksi. Yleensä jos näet InputObject-nimisen parametrin, se hyväksyy putkilinjan syötteen, mutta varmista vain, että tarkastelemme kyseisen parametrin täydellistä apua.

Get-Help -Name Stop-Service -Full

Epäilyt olivat oikein. Joten tässä vaiheessa tiedämme seuraavat asiat:

  • Get-Service palauttaa ServiceController-objektit
  • Stop-Service on parametri nimeltä InputObject, joka hyväksyy yhden tai useamman Palvelukontrollerin syötteenä.
  • InputObject-parametri hyväksyy putkilinjatulon.

Näiden tietojen avulla voimme tehdä seuraavia asioita:

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

Kaikki tämä tänä aikana ihmiset. Seuraavaksi tarkastelemme, kuinka voimme muotoilla, suodattaa ja verrata Pipeline-objekteja.

Kotitehtävä

  • Tutustu Object Pipeline
: hen

Jos sinulla on kysyttävää, voit lähettää minulle @taybgibb tai jättää kommentin.