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.
Muista lukea sarjan aiemmat artikkelit:
Ja pysy kuulolla koko sarjan koko viikon ajan.
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 tehtyä (sed ja grep tulevat mieleen), mutta lopussa, jos haluat tehdä minkäänlaista raskasta tekstin jäsentämistä, sinun täytyy tietää säännölliset lausekkeet, kuten kä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ä.
Netissä olevat objektit ovat paljon samoja, lukuun ottamatta kahta pientä eroa: "Osat" kutsutaan ominaisuudet ja "Ohjeet" kutsutaan menetelmät. 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.
Näet objektin ominaisuudet ja menetelmät siirtämällä sen Get-Member-cmdlet-tiedostoon. 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ä.
Runsaasti Linux-pohjaisia putkilinjoja, joiden avulla voit lähettää tekstin, jonka yksi komento tulostaa 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 cmdlet-elementtejä ei voi yhdistää putkilinjaa käyttäen [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ä cm-koko on Stop-Service; Katsotaanpa sitä apua.
Get-Help -Name Stop-Service
Näyttää siltä, että InputObject-parametri ottaa joukon ServiceController -objekteja tulona. 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 oikeita. Joten tässä vaiheessa tiedämme seuraavaa:
Näiden tietojen avulla voimme tehdä seuraavaa:
Get-Service -nimi "Apple Mobile Device" Stop-palvelu
Kaikki tämä tänä aikana ihmiset. Seuraavaksi tarkastelemme, kuinka voimme muotoilla, suodattaa ja verrata Pipeline-objekteja.
Jos sinulla on kysyttävää, voit lähettää minulle @taybgibbin tai jättää kommentin.